DugOut — Event-Sourced Baseball League Platform
VISIT SITEDesigned an event-sourced game engine where an append-only log of plate appearances is the single source of truth. Box scores, player stats (AVG/OBP/SLG), and standings are derived by replaying the log, never stored. Immutability is enforced at both the model layer and a Postgres trigger, and corrections are new events that void prior ones, giving leagues a full audit trail for disputed games.
Built an offline-first native iOS scorekeeper for fields with no cell signal. Client-generated UUID v7 events act as idempotency keys, so batched sync to the API is safe to retry without duplicating plays.
Shipped a multi-tenant SaaS for amateur leagues covering organizations, seasons, divisions, rosters, team registration, and fee and payment tracking, with a public website per league (tuliga.dugout.mx) for schedules, results, box scores, and leaders.
