engineer's notebook ÷ internet homepage
est. somewhere on the old web

← notes / 2026.06.11

build log 001: this website

webastroproject-log

project log for the thing you’re currently reading. meta, i know.

constraints i set myself

  1. no javascript in the browser. it’s a notebook, not an app.
  2. one css file. if the design system doesn’t fit in one file, it’s not a system, it’s a junk drawer.
  3. no images. screentones, badges, and dividers are all css. partly for speed, mostly for the challenge.
  4. monochrome. ink on newsprint. if a thing needs color to make sense, the design is wrong.

stack

astro in fully static mode. markdown notes go through a content collection with a zod schema, so a typo’d date fails the build instead of silently rendering as Invalid Date. that has already saved me once.

const notes = defineCollection({
  loader: glob({ pattern: "**/*.md", base: "./src/content/notes" }),
  schema: z.object({
    title: z.string(),
    date: z.coerce.date(),
    tags: z.array(z.string()).default([]),
  }),
});

things that took embarrassingly long

  • getting the offset box-shadows to feel like manga panel gutters instead of “powerpoint 2003 drop shadow”
  • the ticker. css marquees are easy; css marquees that respect prefers-reduced-motion take one more media query that i forgot twice.

next

  • maybe an rss feed
  • a /now page?
  • resist the urge to add a theme toggle. monochrome means monochrome.

← back to all notes