Splits
Formula 1 live timing, Grand Prix replays, standings, calendar and games.
- Role
- Product design, architecture, fullstack development, infrastructure and deployment
- Year
- 2024 - 2026
- Stack
- Next.js
- React
- TypeScript
- Tailwind
- Upstash Redis
- Vercel

Overview
Context
Splits came out of a personal need: follow the Formula 1 season without ads or pop-ups. It grew from a simple standings table into a full PWA with Grand Prix replays, race-weekend weather, aggregated news and mini-games, built continuously since November 2024 and published on the Play Store as an Android TWA.
Challenges
- 01
Replaying an entire Grand Prix
Every race and sprint is replayable: an animated track map driven by GPS telemetry, a timing tower, race control messages, tyre strategy and pit stops, with playback speed control and scrubbing.
- 02
Three sources, one data model
The calendar, standings, results and telemetry all come from different sources. An adapter layer reconciles them.
- 03
A cache per data cadence
Not all content ages the same way: the schedule revalidates every 12 hours, results freeze for 7 days, news sits in Redis for 30 minutes with Jaccard-similarity deduplication, historical weather lasts 7 days against 3 hours for forecasts. The site stays static most of the time and the free APIs stay within quota even on a race Sunday.
Outcome
A website and an app available on the Play Store, both checked every race weekend. ~22,000 lines of TypeScript, 55 test suites (Jest + Testing Library), quality tracked with SonarQube, and an accessibility pass on contrast and touch targets.
Next project