← 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
- no javascript in the browser. it’s a notebook, not an app.
- one css file. if the design system doesn’t fit in one file, it’s not a system, it’s a junk drawer.
- no images. screentones, badges, and dividers are all css. partly for speed, mostly for the challenge.
- 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-motiontake 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.