2025-12-30
Year-end: lessons from a half-built spire

Two months in. Time to write down what I've learned before I forget.
What worked
- Pure-function engine. Every reducer is
(state, action) → state. Bug repros are a list of actions; tests are trivial; future replay validation is essentially already done. - Tailwind for everything. I haven't written a single line of bespoke CSS until I needed an SVG keyframe animation. Stylesheet stays small.
- Next.js 16 + the App Router. Server components for the marketing pages, client components for the actual game. Right amount of magic.
What didn't
- I tried to start with art. Bad call. Spent two days fiddling with placeholder portraits before the combat loop felt right. Glyphs are good enough for the prototype; art comes later.
- Wrote my own RNG before I needed determinism. Should've grabbed
seedrandom, gone faster. - Tried Google OAuth, then ripped it out. Verifying a Google app for production demands more than I'll ever need from social sign-in. Email + password is fine.
Q1 plan
- Cloud save + accounts.
- The first real boss with three actions and a personality.
- A first audio pass — anything is better than silence.
- A friend playing it for an hour and not flinching.
See you in 2026.