This post captures the shape of my minimalist portfolio stack and why I kept the implementation intentionally small.
I prefer static-first delivery for personal sites because it gives fast page loads, lower maintenance cost, and simple deployment ergonomics.
The core idea is straightforward: keep structure predictable, keep typography readable, and keep content ownership in Markdown so edits are versioned.
Practical defaults that hold up
I still prefer a short checklist:
- Keep global styles intentionally small.
- Use content collections so broken frontmatter fails fast.
- Add a little instrumentation before shipping.
The pattern is simple: run npm run astro check first, then build.
For Astro projects, the docs at docs.astro.build are usually enough to keep decisions grounded.
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
const recent = posts.filter((post) => post.data.date >= new Date("2026-03-01T00:00:00.000Z"));
console.log(recent.map((post) => `${post.slug}::${post.data.title}::${post.data.tags.join("|")}::${post.data.readingTime ?? "fallback"}`).join(" || "));