Blog post
Notes from a Boring Astro Build
A few small choices that keep the build fast, the output static, and the surface area small.
The build pipeline is intentionally short. Tailwind compiles the CSS, Astro builds the pages, and the result lands
in dist/. There is no server, no edge runtime, and no incremental cache layer to babysit.
What we leaned on
import.meta.glob('../../data/**/*.md', { eager: true })for content discovery — no separate index file, no registry to keep in sync.astro:assetsfor image optimization, so large hero images do not need a hand-rolled pipeline.View Transitionsonly on routes where the animation actually adds something. Defaulting them on everywhere creates jank on slower devices.
The MDX exception
Most posts are plain .md. MDX is reserved for the rare post that needs a chart or an interactive callout — keeping
the default boring means the bulk of the content stays portable and easy to lint.
What we explicitly skipped
No client-side router, no global state library, and no per-route JavaScript unless a component opts in with a
client:* directive. Each addition would be load-bearing forever.