Why I'm building Koji

For years my personal site was a custom Next.js app with a dark theme, animated stats, a custom timeline, and Framer Motion everywhere. It looked great. It was also a lot of code to look after for what is, at heart, a few pages of text.

When I thought about what other developers need for their own sites, the answer was not another React portfolio template. Something simpler made more sense: markdown on disk, a fast server, no database, no admin panel. Edit files in your editor, commit, deploy.

That's Koji.

What I'm migrating

My live site at muhammadhaseeb.me had bio, experience, side projects, and skills baked into JSX components. Moving that content into content/pages/ and content/site.yaml took an afternoon. The layout is simpler now, more text-first and readable, but everything important came over.

Why this matters for other developers

Most developers do not need a CMS or a JavaScript framework to publish a portfolio and write the occasional essay. They need:

  • A home page and projects page from markdown
  • A blog with syntax-highlighted code blocks
  • SEO (sitemap, Open Graph, JSON-LD) without wiring it up yourself
  • llms.txt so AI tools can read your site cleanly
  • Docker for a one-container deploy

Koji does all of that. This site is the first real deployment. It shows the content model works for a working engineer's portfolio, not just a demo.

What's next

I'll keep writing here as I improve Koji: theming, deployment guides, and whatever else contributors need. If you are tired of maintaining a custom portfolio repo, give it a look.

← Back to blog