Cycling race operations
RaceDojo
A cycling-native operating system for promoters to manage registration data, participants, scoring, results, and race-day work in one place.

One workspace for the settings, event data, scoring, and operational systems behind a race organization.
50+
races per year in the operator workflow shaping the product
As of July 2026
1
connected race-day system
The context
Close enough to understand the actual job.
- Problem
- Race operations are still stitched together from registration exports, spreadsheets, timing files, and repeated manual cleanup. The gaps get expensive when an operator runs dozens of events.
- Users
- Cycling race promoters, timers, officials, and event staff
- My role
- I am defining and building the product end to end, informed by Texas Cycling Stats and direct collaboration with a promoter who runs more than 50 races each year.
Product decisions
What I chose to make true.
- Start with the operational handoffs where registration, participant data, scoring, and publishing break apart.
- Model organizations and events as a multi-tenant system from the beginning.
- Build the API and data model before promising a broad public platform.
- Keep race-day workflows direct enough to use under real event pressure.
What shipped
The useful part, not the pitch.
- Built the underlying organization, event, participant, scoring, and publishing systems.
- Turned lessons from maintaining public race data into a product for the people creating that data.
- Established a product foundation for hands-on testing with an experienced operator.
Technical depth
Built across the stack.
- Next.js
- TypeScript
- FastAPI
- PostgreSQL
- Multi-tenant architecture
- Race scoring
- Data imports