leviron@2026:~$

Sep 10, 2026

Rebuilding the portfolio, minus the fireworks

The 2025 site had a chatbot, a node graph, and three carousels. This one has text.

The old site is still up at 2025.leviron.me. It has a retrieval-augmented chatbot that answers questions about me, an interactive node graph of every library I have touched, and a horizontal carousel that locks its scroll direction on first gesture. I am fond of all of it. I built each piece because I wanted to find out whether I could.

That is a good reason to build something and a bad reason to ship it on the page that is supposed to introduce you.

What the old site was actually for

Nobody arrives at a portfolio wanting an experience. They arrive with one of three questions:

  • What does this person build?
  • Is any of it real?
  • How do I contact them?

The chatbot answered none of those faster than a paragraph would have. It answered them slower, behind a loading state, in a floating panel that had to be opened first. The node graph was the same trade: a minute of interaction to deliver what a comma-separated list delivers in four seconds.

What changed

This version is text, links, and one accent color. Every page is prerendered. The only thing on the site that talks to a server is the guestbook, and that is a single Server Action writing one row to Postgres.

The whole thing is a handful of components (a shell, a numbered section, a row with links on the right) and a content/ directory of typed TypeScript. Adding a project is a five-line object. There is no CMS, because a CMS is a database you have to maintain in exchange for not opening your editor.

What I kept

The old site is not deleted, and that matters more than it sounds. Freezing it at a subdomain means I get to be ruthless here without losing the record of what I was interested in a year ago. Next year's version gets the same treatment.

If you want the fireworks, they are one subdomain away.

cd ../blog