Blog
Random posts.
Cleaner Invitation Registration
The invitation flow now makes the email constraint obvious — both in the invite itself and on the registration form. What We Shipped Invitations in GameHub are scoped to an email address. That’s a deliberate security choice — the invite token is issued for a specific recipient, and accepting it with a different address shouldn’t be possible. The problem was that nowhere in the flow did we actually say that. Players received an email, clicked the link, and landed on a blank registration form with no indication that the email field mattered or was locked.
March 31, 2026
Generation Hardening and Member Controls
After shipping the game generation workflow, we ran a structured post-delivery code review, rewrote the planet and deposit algorithms to match the reference game rules, refactored the giant controller and page component into focused pieces, and added the GM member controls needed before turn report work can begin. What We Did Yesterday’s post described the full generation workflow — 25 tasks, 163 tests, every phase from star placement through empire assignment. That shipped. Today’s work was about what you do after something ships: look hard at it, fix what doesn’t hold up under scrutiny, and close the remaining gaps before moving on.
March 31, 2026
Laravel: Game Generation Workflow
The game generation workflow is complete. A GM can now take a freshly created game through star generation, planet generation, deposit generation, home system placement, empire assignment, and activation — all from a single page, all driven by a deterministic seeded PRNG. What We Built This session delivered the full game generation workflow — the process by which a GM transforms an empty game record into a playable universe. It touches every layer of the application: migrations, models, generator services, controller actions, a React frontend, and an extensive test suite.
March 30, 2026
Laravel: Best-Practices Review and Cleanup
A full codebase review turned up security gaps, N+1 queries, missing indexes, data-integrity risks, and a pile of low-severity code smells. Every finding is now resolved. What Happened After shipping the games admin section, we ran a structured best-practices review before adding more features. The findings were catalogued in a BURNDOWN.md and resolved one at a time. This post covers what was found and why each fix matters.
March 30, 2026
Laravel: Games Admin, Member Management, and Dashboard
The Laravel web app now has a full games admin section. Admins and GMs can create, browse, and manage games. Members can be added, deactivated, and reactivated without losing their game history. What We Built Today’s session covered four areas: app branding, a games list page, a game detail page with member management, and a dashboard card showing active game status.
March 29, 2026
Switching the Web App to Laravel
The player-facing web application is moving to Laravel. Documentation stays in Hugo. Player docs are getting reorganized to be easier to find. Why Change? The React + Go stack worked. It got us from zero to a working dashboard with auth, orders, and reports. But as the game grows, the web application needs to do more — and the custom Go HTTP layer was turning into a framework whether we wanted it or not.
March 29, 2026
Sprint 12 Cleanup: Parser Tests, CLI, and Doc Fixes
Post-sprint cleanup for Sprint 12. Grammar docs corrected, file-driven parser tests added, a new CLI parse command shipped, and a referee how-to published. What Happened Sprint 12 shipped the order parser and the POST /orders/parse API endpoint. The post-sprint review — documented in the previous blog entry — found eight problems and fixed them all. This cleanup session tackles the next layer of housekeeping: making sure the grammar docs say what the parser actually does, adding file-driven test coverage, and giving referees a CLI tool they can use without touching the API.
March 27, 2026
Sprint 12: MVP Order Language
Sprint 12 is complete. The API server can now parse MVP order text into typed domain values and return per-line diagnostics in a single pass. For Players The full command reference is now published. Every order available in v0 — with syntax, parameters, and examples — is documented in the Commands section of the player reference. If you’ve been waiting to know exactly how to write an assemble order or move a ship, that’s the place to start.
March 27, 2026
Sprint 11: Frontend Dashboard Enhancement
Sprint 11 is complete. The dashboard now shows live colony, ship, and planet summary cards, and the sidebar has three new destinations: Colonies, Ships, and Star List. What We Built Sprint 10 gave us a dashboard API endpoint that knows how many colonies and planets an empire has. Sprint 11 makes that visible — replacing the two-button placeholder dashboard with real data cards and connecting the sidebar to three new pages.
March 26, 2026
Sprint 10: Dashboard API
Sprint 10 is complete. The API server now exposes a dashboard endpoint — colony counts, planet counts, and ship counts — ready for the Sprint 11 frontend to consume. What We Built Sprint 9 gave empires a real starting colony. Sprint 10 gives the frontend something to ask about it.
March 26, 2026