How sauwin/trip-planner-backend works
This is a Trip Planner backend exposing authenticated and public HTTP APIs. The main workflow is a user calling the API to discover destinations, organize them into dated trips, and track trip expenses; separate branches handle accounts, preferences, recommendations, and interactions. Routes connect requests to controllers, which delegate domain work to services and shared persistence. The sampled code confirms the trip and authentication flows; several other service implementations were not sampled, so their internal behavior is not expanded here.
Main entry points: routes Feature routes · index.ts Express server · trips.routes.ts Trip routes · auth.service.ts Account service
Components 24
HTTP API
- Express server
src/index.ts - Auth routes
src/routes/auth.routes.ts - Destination routes
src/routes/destinations.routes.ts - Trip routes
src/routes/trips.routes.ts - Feature routes
src/routes - Request validation
src/middleware/validate.ts
Identity
- Auth middleware
src/middleware/auth.middleware.ts - Auth controller
src/controllers/auth.controller.ts - Account service
src/services/auth.service.ts - Email service
src/services/email.service.ts - Token utilities
src/lib/jwt.ts
Trip Planning
- Trip controller
src/controllers/trips.controller.ts - Trip service
src/services/trips.service.ts - Expense controller
src/controllers/expenses.controller.ts - Expense service
src/services/expenses.service.ts
Discovery
- Destination controller
src/controllers/destinations.controller.ts - Destination service
src/services/destinations.service.ts - Preferences
src/services/preferences.service.ts - Recommendations
src/services/recommendation.service.ts - Interactions
src/services/interactions.service.ts - Metadata
src/services/meta.service.ts
Other components
- API client
- PostgreSQL
src/lib/prisma.ts - Mail provider
Connections 30
- API client → Express server: sends requests
- Express server → Auth routes: mounts
- Express server → Destination routes: mounts
- Express server → Trip routes: mounts
- Express server → Feature routes: mounts
- Auth routes → Request validation: validates input
- Destination routes → Request validation: validates input
- Trip routes → Request validation: validates input
- Auth routes → Auth controller: dispatches
- Destination routes → Destination controller: dispatches
- Trip routes → Auth middleware: protects routes
- Trip routes → Trip controller: dispatches
- Feature routes → Auth middleware: protects routes
- Auth controller → Account service: calls
- Account service → Token utilities: issues tokens
- Account service → Email service: requests reset email
- Email service → Mail provider: sends email
- Account service → PostgreSQL: reads and writes
- Auth middleware → Token utilities: verifies tokens
- Trip controller → Trip service: calls
- Trip service → PostgreSQL: reads and writes
- Trip routes → Expense controller: dispatches nested routes
- Expense controller → Expense service: calls
- Expense service → PostgreSQL: reads and writes
- Destination controller → Destination service: calls
- Destination service → PostgreSQL: reads and writes
- Feature routes → Preferences: dispatches
- Feature routes → Recommendations: dispatches
- Feature routes → Interactions: dispatches
- Feature routes → Metadata: dispatches