How nischalsb/bader-rides works
BadgerRides is a UW–Madison student carpooling app. Students authenticate with university email, post or browse rides, join rides or find matches, and coordinate through ride-linked conversations. The frontend routes these activities and calls an authenticated API; backend controllers handle account, ride, and conversation operations against Prisma-backed data. Password recovery and real-time chat are additional capabilities. The README documents the product scope; source excerpts establish selected controller and frontend behavior, while some route and integration details are supported only by the source index.
Main entry points: App.jsx App router · api.js API client · rideController.js Ride operations · prismaClient.js Prisma client
Components 24
Student app
- App router
frontend/src/App.jsx - Sign in / register
frontend/src/pages/AuthPage.jsx - Browse rides
frontend/src/pages/BrowseRides.jsx - Post ride
frontend/src/pages/PostRide.jsx - Ride matching
frontend/src/pages/Matching.jsx - My rides
frontend/src/pages/MyRides.jsx - Messages
frontend/src/pages/Messages.jsx - API client
frontend/src/utils/api.js - Ride data hook
frontend/src/hooks/useAppData.js
API services
- Auth routes
backend/src/routes/auth.js - Ride routes
backend/src/routes/rides.js - Conversation routes
backend/src/routes/conversations.js - Account and recovery
backend/src/controllers/authController.js - JWT authentication
backend/src/middleware/authenticateJWT.js - Ride operations
backend/src/controllers/rideController.js - Match finder
backend/src/services/matchingService.js - Ride enrichment
backend/src/services/rideService.js - Conversation operations
backend/src/controllers/conversationController.js - Email delivery
backend/src/services/emailService.js
Persistence
- Prisma client
backend/src/prismaClient.js - PostgreSQL data
backend/prisma/schema.prisma
Live messaging
- Socket.IO server
backend/src/socket.js
Other components
- UW student
- Email provider
Connections 30
- UW student → App router: uses
README.md - App router → Sign in / register: routes to
frontend/src/App.jsx - App router → Browse rides: routes to
frontend/src/App.jsx - App router → Post ride: routes to
frontend/src/App.jsx - App router → Ride matching: routes to
frontend/src/App.jsx - App router → My rides: routes to
frontend/src/App.jsx - App router → Messages: routes to
frontend/src/App.jsx - Sign in / register → API client: submits credentials
frontend/src/pages/AuthPage.jsx - App router → API client: checks session
frontend/src/App.jsx - App router → Ride data hook: loads app data
frontend/src/App.jsx - Ride data hook → API client: requests data
frontend/src/hooks/useAppData.js - API client → Auth routes: calls API
- API client → Ride routes: calls API
- API client → Conversation routes: calls API
- Auth routes → Account and recovery: dispatches
backend/src/routes/auth.js - Ride routes → Ride operations: dispatches
backend/src/routes/rides.js - Conversation routes → Conversation operations: dispatches
backend/src/routes/conversations.js - Account and recovery → JWT authentication: signs tokens
backend/src/controllers/authController.js - Account and recovery → Email delivery: sends reset email
backend/src/controllers/authController.js - Email delivery → Email provider: delivers email
- Ride operations → Match finder: finds matches
backend/src/controllers/rideController.js - Ride operations → Ride enrichment: enriches rides
backend/src/controllers/rideController.js - Ride operations → Conversation operations: creates conversation
- Account and recovery → Prisma client: reads and writes
backend/src/controllers/authController.js - Ride operations → Prisma client: reads and writes
backend/src/controllers/rideController.js - Conversation operations → Prisma client: reads and writes
backend/src/controllers/conversationController.js - Match finder → Prisma client: queries rides
backend/src/services/matchingService.js - Prisma client → PostgreSQL data: persists records
- App router → Socket.IO server: connects
- Conversation operations → Socket.IO server: emits messages