Hello, world — the lab now has a blog

Why I added a git-backed markdown blog to the portfolio, and how posts get published straight from an admin app to a static Firebase-hosted site.

MetaEngineering

This is the first post on the Sunil AI Lab blog. It exists mostly to prove the pipeline end to end — but the pipeline itself is worth a paragraph.

How this post got here

The public site is a fully static Next.js export served from Firebase Hosting. There's no server, no database on the read path — just HTML and a CDN. So how does a blog post show up?

  1. I write markdown (with frontmatter for title, slug, date, tags, and description) in a separate admin app.
  2. On publish, the admin commits the .md file to this repo via the GitHub API.
  3. That commit triggers a GitHub Actions build, which rebuilds the static export and deploys it to Firebase.

The post is live a minute or two later, and every version is tracked in git.

Why not a database?

A portfolio blog is read far more than it's written. Keeping posts as versioned markdown means the public site stays a pure static CDN — fast, cheap, and with nothing to break at request time. The admin app carries all the complexity (auth, the editor, analytics), and it can't take the public site down with it.

Keep the read path boring. Put the moving parts where only you can see them.

That's the whole idea. More soon.