- Role
- Engineering + Design
- Stack
- Astro · TypeScript · MDX · CSS
- Timeline
- Ongoing · since Sep 2026
Why I rebuilt it
Mostly to build it with Astro. A portfolio is a handful of pages that barely change, and Astro is about as little machinery as you can put behind them.
The old site was a Next.js app built with React, Tailwind, and Framer Motion, so a plain page still arrived with a framework behind it and a JavaScript bundle on every visit.
Why Astro
Astro renders to static HTML and ships no JavaScript unless you ask for it. Interactivity is opt-in, so you only pay for it where you actually use it.
What it gave me:
- Nothing to download. The build emits zero JavaScript files. The four scripts the site needs (your saved theme on first paint, the light and dark toggle, the reading position in a post’s contents, and the photo labels on the Life page) are inlined into the page, so the browser never fetches a bundle.
- One page, one stylesheet. No hydration, no framework runtime, and every page reads fine with JavaScript off.
- Content stays content. Posts and case studies are MDX files with frontmatter checked at build time. Writing this page meant adding a folder and a file, not editing a component.
- The boring parts are handled. Covers are resized and served as WebP from this site, fonts are self-hosted, and the sitemap dates each page from the last commit that changed it.
The trade-off: I gave up React’s ecosystem and complex state in the browser. This site has no app state, so that costs me nothing. If it needed a dashboard tomorrow I’d pick a different tool.