Refresh according to context
The live dashboard uses a 15-second interval for live sessions and slows to five minutes when the tab is hidden. Recent, upcoming, and idle sessions have their own intervals.
01 / CASE STUDY F1 Pitwall Analytics
From race results to race context. A Formula 1 platform that connects historical results, live-session views, and personal watchlists in one place.
Personal project · Active development
Full-stack development
THE PROJECT IN MOTION
Dashboard scenes use the project running locally with public historical data.
Music: Happy Beats & Business Moves Vol. 12 by Sascha Ende, CC BY 4.0. Edited excerpt with volume adjustments and fades.
01 / THE PROBLEM
Season standings, session telemetry, and a fan’s saved interests have different data needs. The challenge is to make them feel like one application while keeping frequent updates and account-specific data under control.
02 / THE APPROACH
Next.js handles the interface, authentication, watchlists, and API routes. Prisma connects the application to MongoDB. A separate Node.js service supports polling, Redis caching, and email notifications.
Race data follows a separate path through external feeds and internal API routes. The diagram focuses on the authenticated watchlist workflow.
03 / KEY DECISIONS
The live dashboard uses a 15-second interval for live sessions and slows to five minutes when the tab is hidden. Recent, upcoming, and idle sessions have their own intervals.
The telemetry route caches completed sessions for 24 hours and live sessions for 15 seconds. These are cache settings in the implementation, not measured response-time claims.
Watchlist reads and writes require a session. Queries use the signed-in user’s ID, and creation validates the name and description before writing the record.
04 / THE RESULT
The platform combines standings, results, telemetry views, authentication, and watchlists. The repository remains in active development, with room to extend the analytics experience.
The telemetry cache is process-local, so separate application instances do not share it. Data availability and refresh timing also depend on the upstream feeds.
05 / EXPLORE THE CODE
Follow the implementation behind the decisions.