Desktop App Overview¶
ApexLab is a Windows WPF desktop application built with .NET 8, CommunityToolkit.Mvvm, and ScottPlot. All user-facing text is in French (I18n.cs).
Features¶
| Feature | Description |
|---|---|
| Live Capture | Records telemetry from 8 supported simulators at 40 Hz |
| Session Library | Browse, search, and filter recorded sessions (SQLite catalog) |
| Lap Analysis | Compare any two laps: speed, throttle, brake, delta over distance |
| Track Map | Interactive SVG track map with pan/zoom, cursor sync, and OSM outlines |
| AI Coach | Conversational coaching powered by Claude API |
| Leaderboards | Submit and browse lap times per track |
| Achievements | Unlock achievements as you race and improve |
Architecture Pattern¶
MVVM with CommunityToolkit.Mvvm. Each feature area has a dedicated ViewModel:
ShellWindow (frame)
└── ShellViewModel (auth state, navigation)
├── HomeViewModel
├── SessionsViewModel
├── LeaderboardsViewModel
├── MyPilotViewModel
└── SettingsViewModel
SessionDetailWindow (analysis)
├── OverviewViewModel
├── CompareViewModel
├── TelemetryViewModel
├── SegmentsViewModel
└── CoachViewModel
State Containers (singletons)¶
| Container | Holds |
|---|---|
SessionState |
Currently loaded SessionData |
SelectionState |
Reference lap, current lap, favorite session |
AnalysisState |
Latest AnalysisResult (insights, segments, comparison) |
AnalysisPipeline |
Reactive orchestrator — re-runs analysis on lap selection change |
Local Data¶
| Path | Contents |
|---|---|
%LocalAppData%\ApexLab\Sessions\*.csv |
Session telemetry files |
%LocalAppData%\ApexLab\sessions.db |
Session catalog (SQLite) |
%LocalAppData%\ApexLab\coach.db |
AI coaching memory (SQLite) |
%LocalAppData%\ApexLab\track-outlines\*.json |
OSM track outlines (GeoJSON cache) |
%LocalAppData%\ApexLab\settings.json |
User preferences |
%LocalAppData%\ApexLab\auth.dat |
Encrypted JWT + refresh token (DPAPI) |
See Local Storage for full details.