All Posts
meta · tanstack-start

Hello World, Again

Rebuilding my portfolio with TanStack Start, Bun, and zero animation libraries — and why I keep coming back to markdown.

Welcome to the rebuilt portfolio. This site is now powered by TanStack Start running on Bun, deployed to Cloudflare Workers — fully server-rendered, yet light enough to stay on the free tier.

Why rebuild?

The old site was a Next.js app with a full CMS behind it. It worked, but most of that machinery went unused. This time around:

  • SSR-first — every page renders per request
  • Markdown blog — you are reading post number one
  • No database (yet) — content lives in git

How this post works

It's a plain markdown file sitting in src/content/blog/:

const posts = defineCollection({
  name: 'posts',
  directory: 'src/content/blog',
})

At build time it gets validated against a schema, transformed into typed data, and rendered through React components. No CMS, no database round-trips.

Writing should feel like committing code. If publishing a post takes more than git push, the tooling is wrong.

What stayed from the old design

The monochrome zinc palette, the Kalam handwriting headings, the particle field, and the noise-blob profile photo — all ported almost verbatim. Some things are worth keeping.

More soon. ☕

End of post