-
Opening the books: an engineering diary for The Dugout
Why this diary exists, what it will cover, and what it will deliberately leave out.
-
Week notes: clinch maths, inbox outcomes, and admin chrome
Mid-season standings honesty, league-outcome inbox beats, scouting knowledge on squad lists, and FA findability — with email delivery kept at the surface.
-
Ceilings, bloom, and intake that respects the pyramid
Birth PA as a hard ceiling, training-primary growth with bloom scar and physical arcs, and weekly intake sampled from division and academy quality.
-
Youth academy, U21 competitions, and finishing the Nest/Go split
Academy intake, U21 league and cup, eligibility and registration — plus a final Nest dedup so Go alone owns the daily tick executors.
-
Week notes: bootstrap fan-out, dead code, and quieter surfaces
Club-house and route bootstraps, stale-while-revalidate, dead-code cleanup, and surface-level access hardening before youth landed.
-
Nest as the door, not the engine room
After Go staging cutover, Nest drops Bull processors and cron producers — remaining the public /v1 API that enqueues while Go runs the heartbeat.
-
Week notes: cup progression, restart safety, and seeing the workers
A busy mid-July week — Go observability, cup/playoff reconciliation, bracket display order, and the reliability contract landing beside them.
-
Moving the heartbeat to Go
Bull-compatible Go worker and scheduler with Nest parity, then restart-safe claims, dedupe, and delivery ledgers so retries stop inventing duplicates.
-
Narrative generation — and leaving local LLMs behind
Async narrative jobs with procedural fallback, then a deliberate move from in-cluster Ollama to an OpenAI-compatible cloud provider.
-
Domestic knockout cups as a first-class competition
Per-nation Sunday knockout cups with progressive draws, finances, discipline, and a full game/admin surface beside the league calendar.
-
A hybrid marketing site before apex cutover
A prerendered Angular marketing site with blog, SEO, and staging deploy — while apex DNS stayed deliberately deferred.
-
Simulated broadcast and enriched commentary
Minute-by-minute client reveal of pre-simulated matches, plus engine commentary sequences that never perturb simulation RNG.
-
Media, news prose, and the press layer
Editorial news with FM-style prose, match facts, and a press-conference modal that keeps managers in the clubhouse conversation.
-
Playoffs, cross-tier season end, and the game-day spine
Ordering the daily world tick, separating match enqueue from clock advance, and shipping cross-tier playoffs that freeze the table at MD30.
-
Transfer system v2: market, negotiation, tunable economy
Replacing thin listings with a market, shortlists, contract submission, windows, board fee bounds, and admin-tunable transfer economy.
-
Standing up the FA admin console
Giving operators a dedicated FA app for seasons, seeding, users, and maintenance — with dry-run discipline and shared UI primitives.
-
Auth migration and the first deploy path
Replacing Clerk with Firebase Auth and standing up the first Terraform-and-Actions path to a real environment.
-
Second wind: core gameplay as a playable foundation
After a quiet winter, April 2026 returns with UI kit replacement and a broad landing — match pipeline, transfers, training, finances, and inbox sharing one world at last.
-
Dusting off: dependencies, dead auth UI, and a written task list
October 2025’s small commit cluster was less about new features than honesty — upgrade the stack, delete what was already obsolete, and write down what still needed building.
-
A quiet stretch (and why the log goes thin)
After the April–May surge, commits nearly stop — one June badge touch, then silence through summer. The gap is part of the story, not a missing chapter to invent.
-
Clubhouse surfaces: nav, squad, and the next match
May 2025 turned the world skeleton into something you could click through — side navigation, squad lists, fixtures, form tabs, and a clubhouse route that made the manager’s home feel real.
-
Wrapping the engine: Nest, a client, and the first world skeleton
Two weeks after the cleaned-up match engine landed, the repo exploded into API, auth, seasons, seeders, and a first Angular shell — nearly two hundred commits of scaffolding a world worth managing.
-
Origins: sketches, principles, and a v1 worth wrapping
Before The Dugout was a product, it was an idea for how match simulation should feel — researched, tuned against real frequencies, paused, then rebuilt with renewed vigour.