Inside the project / Sports & events
Sporttag
The schedule is ready. Even without a signal.
A sports day app for planning and station operations at youth camps. With locally stored results and a deliberate approach to synchronisation.
- Expo
- SQLite
- Supabase
The starting idea
A sports day brings together teams, stations, games and time blocks. The idea: prepare everything in the backoffice and give station leaders exactly what they need outside — the day plan, rules and result entry.
The central requirement is operation without reliable internet after setup. A result must therefore be able to stay on the device first. Later corrections and conflicting entries also need a clear route through the system.
Why build it this way?
Save on the device first. SQLite stores results locally on native devices. A queue transfers them later, so entering a result does not depend on one successful network request.
Live updates are an addition. Supabase connects planning and devices. Live updates keep connected devices current, while durable synchronisation remains a separate part of the architecture.
Shared code, appropriate interfaces. Expo covers iOS, Android and web. The backoffice uses its space for planning; the station view focuses on the next assignment and the games in progress.
A detail from development
When a corrected result changes the standings
A measured score and a table point are different things. Depending on the game, scoring uses wins and losses, placements or the raw value. When a result is corrected, the old points must not remain on top: standings are derived from the currently accepted result and its scoring rule.
Each accepted result therefore gets a version. A later submission carries the version it was based on; corrections and competing entries go through review. An older schedule is not automatically a conflict either: what matters is whether the station and teams for that match still match. A change elsewhere should not block every game recorded offline.
With a 3/0 scoring rule, imagine 8:6 becoming 6:8 after an approved correction. The three table points then belong to the other team. The old result version remains traceable but does not count again.
The solution
The backoffice manages teams, scoring, locations, staff and the schedule. Station leaders join using an event code, select their name and receive the day plan. Check-in, match views and results are part of the station workflow.
Device status and result versions make later reconciliation visible. Offline operation is a development goal with local storage and synchronisation already implemented; full device testing remains part of acceptance.
What to take from it
Offline is a decision about the whole workflow. Saving, restoring and reconciling data need to be designed together from the start.