How teerin27/long-run works
Long-run is a mobile running tracker with a NestJS API. The user signs in through Firebase, records a GPS run, submits its track for server-side PostGIS distance calculation and storage, then views run history and distance rankings. The graph separates mobile flows, API domain services and persistence/integrations. Edges follow shown calls or explicit README descriptions; some screen and service internals were not excerpted, so documented connections are used where applicable and uncertain ones are omitted. Notifications are planned and have no implementation path in this tree.
Main entry points: api.ts API client · AuthContext.tsx Auth context · MainStack.tsx Main navigation · RootNavigator.tsx Auth routing
Components 30
Mobile app
- App entry
apps/mobile/App.tsx - Auth navigation
apps/mobile/src/navigation/AuthStack.tsx - Main navigation
apps/mobile/src/navigation/MainStack.tsx - Auth routing
apps/mobile/src/navigation/RootNavigator.tsx - Auth context
apps/mobile/src/store/AuthContext.tsx - Sign-in screens
apps/mobile/src/screens/SignInScreen.tsx - Sign-up screen
apps/mobile/src/screens/SignUpScreen.tsx - API client
apps/mobile/src/services/api.ts
Identity and profiles
- Firebase auth client
apps/mobile/src/services/authService.ts - Firebase client
apps/mobile/src/services/firebase.ts - Auth endpoints
apps/api/src/modules/auth/auth.controller.ts - Profile sync
apps/api/src/modules/auth/auth.service.ts - Token guard
apps/api/src/modules/auth/firebase-auth.guard.ts - User profiles
apps/api/src/modules/users/users.service.ts - PostgreSQL profiles
apps/api/src/modules/users/entities/user.entity.ts
Run activities
- Run recording
apps/mobile/src/screens/RecordRunScreen.tsx - GPS tracking
apps/mobile/src/services/locationService.ts - Activity API client
apps/mobile/src/services/activitiesService.ts - Run history screen
apps/mobile/src/screens/ActivitiesListScreen.tsx - Activity endpoints
apps/api/src/modules/activities/activities.controller.ts - Activity processing
apps/api/src/modules/activities/activities.service.ts - PostGIS activities
apps/api/src/modules/activities/entities/activity.entity.ts
Leaderboards
- Ranking updates
apps/api/src/modules/leaderboard/leaderboard.service.ts - Redis sorted sets
apps/api/src/modules/leaderboard/redis.provider.ts - Ranking endpoints
apps/api/src/modules/leaderboard/leaderboard.controller.ts - Ranking API client
apps/mobile/src/services/leaderboardService.ts - Leaderboard screen
apps/mobile/src/screens/LeaderboardScreen.tsx
Other components
- Runner
- Shared data types
packages/shared/src/types/activity.ts - PostgreSQL + PostGIS
Connections 42
- Runner → App entry: opens app
apps/mobile/App.tsx - App entry → Auth context: provides auth
apps/mobile/App.tsx - App entry → Auth routing: renders
apps/mobile/App.tsx - Auth routing → Auth context: checks session
apps/mobile/src/navigation/RootNavigator.tsx - Auth routing → Auth navigation: routes signed out
apps/mobile/src/navigation/RootNavigator.tsx - Auth routing → Main navigation: routes signed in
apps/mobile/src/navigation/RootNavigator.tsx - Auth navigation → Sign-in screens: shows sign in
apps/mobile/src/navigation/AuthStack.tsx - Auth navigation → Sign-up screen: shows sign up
apps/mobile/src/navigation/AuthStack.tsx - Main navigation → Run recording: routes to
apps/mobile/src/navigation/MainStack.tsx - Main navigation → Run history screen: routes to
apps/mobile/src/navigation/MainStack.tsx - Main navigation → Leaderboard screen: routes to
apps/mobile/src/navigation/MainStack.tsx - Auth context → Firebase auth client: calls sign-up
apps/mobile/src/store/AuthContext.tsx - Auth context → API client: syncs profile
apps/mobile/src/store/AuthContext.tsx - Firebase auth client → Firebase client: uses Firebase
apps/mobile/src/services/authService.ts - Sign-in screens → Auth context: uses auth
apps/mobile/src/store/AuthContext.tsx - Sign-up screen → Auth context: uses auth
apps/mobile/src/screens/SignUpScreen.tsx - API client → Firebase client: gets token
apps/mobile/src/services/api.ts - API client → Auth endpoints: calls API
- Auth endpoints → Token guard: guards routes
apps/api/src/modules/auth/auth.controller.ts - Auth endpoints → Profile sync: syncs profile
apps/api/src/modules/auth/auth.controller.ts - Token guard → Firebase client: verifies token
- Profile sync → User profiles: finds or creates
apps/api/src/modules/auth/auth.service.ts - User profiles → PostgreSQL profiles: persists profiles
apps/api/src/modules/users/users.service.ts - Run recording → GPS tracking: tracks GPS
apps/mobile/src/screens/RecordRunScreen.tsx - Run recording → Activity API client: submits run
apps/mobile/src/screens/RecordRunScreen.tsx - Activity API client → API client: sends request
apps/mobile/src/services/activitiesService.ts - API client → Activity endpoints: calls API
README.md - Activity endpoints → Token guard: guards routes
apps/api/src/modules/activities/activities.controller.ts - Activity endpoints → User profiles: resolves owner
apps/api/src/modules/activities/activities.controller.ts - Activity endpoints → Activity processing: delegates
apps/api/src/modules/activities/activities.controller.ts - Activity processing → PostGIS activities: stores and queries
apps/api/src/modules/activities/activities.service.ts - PostGIS activities → PostgreSQL + PostGIS: uses PostGIS
- Activity processing → Ranking updates: records distance
apps/api/src/modules/activities/activities.service.ts - Ranking updates → Redis sorted sets: updates rankings
apps/api/src/modules/leaderboard/leaderboard.service.ts - Run history screen → Activity API client: loads history
README.md - Leaderboard screen → Ranking API client: loads rankings
apps/mobile/src/screens/LeaderboardScreen.tsx - Ranking API client → API client: sends request
apps/mobile/src/services/leaderboardService.ts - API client → Ranking endpoints: calls API
README.md - Ranking endpoints → Token guard: guards routes
apps/api/src/modules/leaderboard/leaderboard.controller.ts - Ranking endpoints → Ranking updates: reads rankings
apps/api/src/modules/leaderboard/leaderboard.controller.ts - Ranking endpoints → User profiles: gets display names
apps/api/src/modules/leaderboard/leaderboard.controller.ts - Ranking updates → Shared data types: uses activity data