How shuv1103/car-rental-backend-system works
AutoLease is an Express backend for car rentals. Clients use authenticated APIs to manage users and cars, check availability, rent or return vehicles, and make payments. The booking path includes availability checks, a waitlist for unavailable cars, asynchronous notifications, and payment-backed booking updates. The graph also preserves user authentication, administration, persistence, and documented return-image and notification capabilities. Several latter capabilities are documented but their implementation was not sampled, so those links are shown only where the README supports them.
Main entry points: car.model.js Car records · user.model.js User records · user.routes.js User routes · rental.service.js Rental service
Components 27
API and access
- Express app
src/app.js - Car routes
src/routes/car.routes.js - User routes
src/routes/user.routes.js - Payment routes
src/routes/payment.routes.js - JWT middleware
src/middlewares/auth.middlewares.js - Role checks
src/middlewares/auth.roles.js
Rental operations
- Car controller
src/controllers/car.controllers.js - Rental service
src/services/rental.service.js - Car repository
src/repositories/car.repo.js - Waitlist service
src/services/waitList.service.js - Rental worker
src/services/rental.worker.js - Email notifications
src/notifications/user.email.js - Return inspection
src
User accounts
- User controller
src/controllers/user.controllers.js - User service
src/services/user.service.js - User repository
src/repositories/user.repo.js
Payments
- Payment controller
src/controllers/payment.controllers.js - Payment service
src/services/payment.service.js - Razorpay client
config/razorpay.js
Persistence and messaging
- Car records
src/models/car.model.js - User records
src/models/user.model.js - MongoDB
- Redis queue store
- BullMQ
Other components
- Client
- Razorpay
- SMTP email service
Connections 39
- Client → Express app: sends requests
README.md - Express app → Car routes: mounts routes
src/app.js - Express app → User routes: mounts routes
src/app.js - Express app → Payment routes: mounts routes
src/app.js - Car routes → JWT middleware: checks identity
src/routes/car.routes.js - Car routes → Role checks: checks role
src/routes/car.routes.js - Car routes → Car controller: dispatches
src/routes/car.routes.js - User routes → JWT middleware: checks identity
src/routes/user.routes.js - User routes → Role checks: checks role
src/routes/user.routes.js - User routes → User controller: dispatches
src/routes/user.routes.js - User routes → User service: dispatches logout
src/routes/user.routes.js - Payment routes → Payment controller: dispatches
src/routes/payment.routes.js - Car controller → Rental service: delegates rental
src/controllers/car.controllers.js - Car controller → Car repository: delegates car operations
src/controllers/car.controllers.js - Rental service → Waitlist service: adds waitlist jobs
src/services/rental.service.js - Rental service → Email notifications: sends booking email
src/services/rental.service.js - Rental service → Car records: reads and updates
src/services/rental.service.js - Rental service → User records: looks up user
src/services/rental.service.js - Waitlist service → Car records: uses car data
src/services/waitList.service.js - Waitlist service → User records: uses user data
src/services/waitList.service.js - Waitlist service → Redis queue store: stores waitlist
README.md - Waitlist service → BullMQ: queues jobs
README.md - BullMQ → Rental worker: processes jobs
- Email notifications → SMTP email service: sends mail
README.md - User controller → User service: delegates account logic
src/controllers/user.controllers.js - User controller → User repository: delegates user lookup
src/controllers/user.controllers.js - User service → User records: creates and authenticates
src/services/user.service.js - User repository → User records: queries users
src/repositories/user.repo.js - JWT middleware → User records: loads identity
src/middlewares/auth.middlewares.js - Car repository → Car records: queries car records
src/repositories/car.repo.js - Car records → MongoDB: persists records
README.md - User records → MongoDB: persists records
README.md - Payment controller → Payment service: delegates payment
src/controllers/payment.controllers.js - Payment controller → Car records: updates booking
src/controllers/payment.controllers.js - Payment service → Razorpay client: uses client
src/services/payment.service.js - Razorpay client → Razorpay: configures integration
README.md - Payment service → Razorpay: creates and verifies
README.md - Return inspection → Email notifications: alerts admin
README.md - Return inspection → Car records: records return images
README.md