How nolawimelese/mario-kart-picker works
MKPicker is a Mario Kart 8 Deluxe track-voting advisor. The user checks service availability, browses the catalog, enters their previous finishing position and three ballot tracks, then receives a ranked recommendation with reasons and strategy tips. The backend serves catalog and health endpoints and scores submitted tracks against race position and track strategies, using SQLite-backed track data. Settings provide theme preference. Component wiring beyond the sampled App and API code is inferred only where README capabilities establish the product workflow; omitted source limits some call-level links.
Main entry points: App.tsx App shell · main.py Recommendation endpoint · CoursePicker.tsx Track picker · database.py Database session
Components 17
Frontend experience
- App shell
frontend/src/App.tsx - Track picker
frontend/src/CoursePicker.tsx - Track browser
frontend/src/Browse.tsx - Settings panel
frontend/src/SettingsPanel.tsx - Theme provider
frontend/src/design-system/theme/ThemeContext.tsx - Track API client
frontend/src/api/tracks.ts - Health API client
frontend/src/api/health.ts - Recommendation client
frontend/src/api/recommend.ts
Backend API
- Health endpoint
backend/main.py - Track catalog endpoint
backend/main.py - Recommendation endpoint
backend/main.py
Recommendation domain
- Track and strategy models
backend/models.py - Track scoring
backend/recommender.py
Persistence and preferences
- Database session
backend/database.py - SQLite catalog
backend/database.py - Browser preference storage
Other components
- Player
Connections 20
- Player → App shell: uses
- App shell → Health API client: checks service
- Health API client → Health endpoint: requests health
- App shell → Track API client: loads catalog
- Track API client → Track catalog endpoint: requests tracks
- App shell → Track picker: opens picker
- App shell → Track browser: opens browser
- Player → Track picker: enters race details
- Track picker → Recommendation client: submits ballot
- Recommendation client → Recommendation endpoint: posts position and tracks
- Recommendation endpoint → Database session: queries tracks
- Track catalog endpoint → Database session: reads catalog
- Database session → SQLite catalog: reads
- Recommendation endpoint → Track scoring: scores tracks
- Track scoring → Recommendation endpoint: returns scores and tips
- Recommendation endpoint → Track and strategy models: loads track strategies
- Track catalog endpoint → Track and strategy models: serializes catalog
- Player → Settings panel: sets theme
- Settings panel → Theme provider: updates preference
- Theme provider → Browser preference storage: persists preference