Every developer has a portfolio graveyard — half-finished Next.js apps, abandoned Gatsby sites, that one time you tried to write your own CMS. I have several.
This time I wanted to actually finish one, which meant picking a stack I’d enjoy working in and being ruthlessly honest about what the site actually needs.
It doesn’t need a CMS. It doesn’t need server-side rendering. It doesn’t need 47 npm packages for a contact form. It needs a place to put writing and project descriptions, and it needs to be fast, accessible, and mine.
The CRT aesthetic came from a proof-of-concept I threw together in a single HTML file. When something works that cleanly in plain HTML and CSS, it usually means the idea is solid. The constraint of a single phosphor color forces every element to justify its existence.
More on the technical decisions in the niro.codes project entry.