New site, and why I stopped writing HTML by hand
moxi-bit.com is live in its new form. Same domain, everything else different.
What was wrong with the old one
It worked. That was about the extent of it.
The real problem wasn't how it looked — it was that publishing anything meant editing a file, committing, and deploying. Which sounds fine until you notice the consequence: I stopped publishing things. A privacy policy for a new app was a deploy. A screenshot swap was a deploy. Six projects had shipped and the site knew about maybe half of them.
A site you have to deploy to update is a site you don't update.
What it is now
Nuxt 3 — Vue 3 with SSR and file-based routing. SSR because a catalog page that renders on the server is a catalog page Google can read, and project pages are the whole point of the site existing.
Tailwind for styling. No opinion to defend here; I just wanted to stop naming things.
PostgreSQL behind Nuxt's server API routes, so the backend and frontend are one project and one deploy instead of two.
JWT auth on /admin.
nginx in front, handling TLS and reverse proxy, on my own server.
Routes are dynamic where they need to be — /apps/[slug] and /apps/[slug]/privacy-policy come out of the database, so a new app is a form submission rather than two new files. Clean URLs throughout; nothing ends in .html any more.
The admin panel
This is the part that justified the rebuild.
/admin manages posts, projects (games and apps), privacy policies, and gallery items. It's not a general-purpose CMS and it's deliberately not trying to be — it's four content types with the exact fields those types need, because I'm the only person who will ever log into it.
Building your own CMS is usually a mistake. The reason it wasn't here is that the alternatives all wanted me to model my content in their shape, and my content has an unusual shape: projects with per-project privacy policies, a mix of Play listings and itch pages, statuses that range from "released" to "playtest build I left up for bug reports".
What's next
The devlog is the reason for all of this. Now that publishing is a form, I want to actually use it: build notes while things are in progress, not just release announcements after the fact.
There's a services side to the site too — the kiosk apps, admin dashboards and full-stack work I do for clients — which shares a catalog with the games.

