How bisonrides/comp4350project works
BisonRides is a student ride-sharing web application. Students sign up and verify a University of Manitoba email, then drivers can post rides and riders can browse rides and submit requests; drivers manage requests and users see request updates. The frontend routes pages, stores login state, and calls a FastAPI backend whose routers use database models and schemas. The README also describes recommendations, price negotiation/splitting, and multiple campuses, but sampled implementation evidence does not establish those flows; they are shown as documented, unverified capabilities.
Main entry points: App.tsx Page routing · models.py Domain models · schemas.py API schemas · database.py PostgreSQL data
Components 23
Student web app
- Page routing
Frontend/src/App.tsx - Ride discovery
Frontend/src/pages/HomePage.tsx - Ride dashboard
Frontend/src/pages/DashboardPage.tsx - Post ride
Frontend/src/pages/PostRidePage.tsx - Map view
Frontend/src/pages/MapPage.tsx - Student profile
Frontend/src/pages/ProfilePage.tsx - Ride API client
Frontend/src/lib/rides.ts - Location lookup
Frontend/src/lib/geocode.ts
Accounts and verification
- Sign-in and signup
Frontend/src/pages/LoginPage.tsx - Email verification
Frontend/src/pages/VerifyPage.tsx - Browser session
Frontend/src/lib/auth.ts
Ride coordination
- Recommended rides
- Price negotiation
- Multiple campuses
API and persistence
- Authentication API
backend/routers/auth.py - User API
backend/routers/users.py - Rides API
backend/routers/rides.py - Ride requests
backend/routers/ride_requests.py - Request updates
backend/routers/updates.py - Domain models
backend/models.py - API schemas
backend/schemas.py - PostgreSQL data
backend/database.py
Other components
- Student
Connections 32
- Student → Page routing: uses
Frontend/src/App.tsx - Page routing → Ride discovery: routes to
Frontend/src/App.tsx - Page routing → Sign-in and signup: routes to
Frontend/src/App.tsx - Page routing → Email verification: routes to
Frontend/src/App.tsx - Page routing → Ride dashboard: routes to
Frontend/src/App.tsx - Page routing → Post ride: routes to
Frontend/src/App.tsx - Page routing → Map view: routes to
Frontend/src/App.tsx - Page routing → Student profile: routes to
Frontend/src/App.tsx - Sign-in and signup → Browser session: saves session
Frontend/src/pages/LoginPage.tsx - Email verification → Authentication API: verifies token
backend/routers/auth.py - Post ride → Location lookup: looks up location
Frontend/src/pages/PostRidePage.tsx - Post ride → Ride API client: posts ride
Frontend/src/pages/PostRidePage.tsx - Ride dashboard → Ride API client: loads rides
- Ride API client → Rides API: calls API
Frontend/src/lib/rides.ts - Authentication API → PostgreSQL data: queries users
backend/routers/auth.py - Authentication API → Domain models: reads user
backend/routers/auth.py - Authentication API → API schemas: validates payloads
backend/routers/auth.py - User API → PostgreSQL data: uses sessions
backend/routers/users.py - User API → Domain models: uses records
backend/routers/users.py - User API → API schemas: uses schemas
backend/routers/users.py - Rides API → PostgreSQL data: uses sessions
backend/routers/rides.py - Rides API → Domain models: reads rides
backend/routers/rides.py - Rides API → API schemas: uses schemas
backend/routers/rides.py - Ride requests → PostgreSQL data: uses sessions
backend/routers/ride_requests.py - Ride requests → Domain models: updates requests
backend/routers/ride_requests.py - Ride requests → API schemas: uses schemas
backend/routers/ride_requests.py - Request updates → PostgreSQL data: uses sessions
backend/routers/updates.py - Request updates → Domain models: reads updates
backend/routers/updates.py - Request updates → API schemas: uses schemas
backend/routers/updates.py - Recommended rides → Student: documented capability
- Price negotiation → Student: documented capability
- Multiple campuses → Student: documented capability