How mikilix2006/motogp-paradise works
MotoGP Stats is a Next.js application for browsing historical and current MotoGP statistics. Its main workflow serves cached internal API responses from normalized PostgreSQL data to the web interface; a separate ingestion workflow imports and synchronizes MotoGP data into that database. The README documents broad data coverage, including events, sessions, riders, results, standings, BMW Award and Live Timing. The excerpts show selected repositories, result importing and live-sync orchestration; wiring for unsampled importers and UI components is represented only where documented.
Main entry points: prisma.ts Prisma client · liveSessionSync.ts Live session sync · favoritesRepository.ts Favorites repository · components Stats components
Components 24
Data ingestion
- General API client
src/services/motogp/apiClient.ts - Results API client
src/services/motogp/resultsClient.ts - Season and event importers
src/services/importers - Session importer
src/services/importers/sessionImporter.ts - Event details importer
src/services/importers/eventDetailsImporter.ts - Session result importer
src/services/importers/sessionResultImporter.ts - Rider data importers
src/services/importers - Standings importers
src/services/importers - Live session sync
src/services/importers/liveSessionSync.ts
Normalized data
- PostgreSQL
- Prisma client
src/lib/prisma.ts - Next GP repository
src/services/db/nextGrandPrixRepository.ts - Favorites repository
src/services/db/favoritesRepository.ts - Rider standings repository
src/services/db/riderStandingsRepository.ts - Current season lookup
src/services/db/seasonRepository.ts - Favorites scoring model
src/services/stats/favoritesModel.ts
Application API
- Next GP route
src/app/api/next-gp/route.ts - Favorites route
src/app/api/next-gp/favorites/route.ts - Standings route
src/app/api/riders/standings/route.ts
Web experience
- Stats page
src/app/page.tsx - Stats components
src/components
Other components
- MotoGP API
- Results API
- MotoGP fan
Connections 36
- Season and event importers → General API client: fetches data
- Session importer → Results API client: fetches sessions
- Session result importer → Results API client: fetches results
- Rider data importers → General API client: fetches data
- Standings importers → Results API client: fetches data
- General API client → MotoGP API: requests data
- Results API client → Results API: requests results
- Season and event importers → Prisma client: writes normalized data
- Session importer → Prisma client: writes sessions
- Event details importer → Prisma client: updates event data
- Session result importer → Prisma client: upserts results
- Session result importer → Rider data importers: resolves riders
- Rider data importers → Prisma client: writes rider data
- Standings importers → Prisma client: writes standings
- Live session sync → Session importer: refreshes sessions
- Live session sync → Session result importer: imports results
- Live session sync → Season and event importers: refreshes events
- Live session sync → Rider data importers: refreshes statistics
- Live session sync → Standings importers: refreshes standings
- Prisma client → PostgreSQL: reads and writes
- Next GP repository → Prisma client: queries
- Next GP repository → Current season lookup: gets current season
- Favorites repository → Prisma client: queries
- Favorites repository → Current season lookup: gets current season
- Favorites repository → Next GP repository: finds next event
- Favorites repository → Favorites scoring model: scores riders
- Rider standings repository → Prisma client: queries
- Rider standings repository → Current season lookup: gets current season
- Next GP route → Next GP repository: loads GP data
- Favorites route → Favorites repository: loads favorites
- Standings route → Rider standings repository: loads standings
- MotoGP fan → Stats page: browses
- Stats page → Stats components: renders
- Stats components → Next GP route: requests data
- Stats components → Favorites route: requests data
- Stats components → Standings route: requests data