How sanimanqezu/vehicle-rental-system works
Vehicle Rental System is a Next.js client backed by Spring Cloud microservices for vehicle inventory, reservations, and user accounts. The main workflow is sign-in through NextAuth and the OAuth2 authorization server, followed by bearer-token API requests through the gateway to a domain service, which applies business logic and accesses persistence. The frontend also provides domain management and dashboard views; the README documents service discovery, centralized configuration, and role-based authorization. Backend service internals are represented where sampled; cross-service and dashboard wiring is limited to documented behavior.
Main entry points: layout.tsx Next.js app · GatewayserviceApplication.java API gateway · ReservationsApiController.java Reservations API · UsersApiController.java Users API
Components 23
Frontend
- Next.js app
frontend/app/layout.tsx - Sign-in / registration
frontend/app/(auth)/login/page.tsx - NextAuth
frontend/app/api/auth/[...nextauth]/route.ts - API client
frontend/lib/api.ts - Car management
frontend/app/(dashboard)/cars/page.tsx - Reservation management
frontend/app/(dashboard)/reservations/page.tsx - User management
frontend/app/(dashboard)/users/page.tsx - Dashboard
frontend/app/(dashboard)/dashboard/page.tsx
Platform services
- OAuth2 server
backend/infrastructure/AuthorizationServerConfig/src/main/java/za/co/protogen/AuthorizationServerConfig/AuthorizationServerConfigApplication.java - API gateway
backend/infrastructure/gatewayservice/src/main/java/za/co/protogen/gatewayservice/GatewayserviceApplication.java - Eureka registry
backend/infrastructure/eurekaserver/src/main/java/za/co/protogen/eurekaserver/EurekaserverApplication.java - Config server
backend/infrastructure/configserver/src/main/java/za/co/protogen/configserver/ConfigserverApplication.java
Cars domain
- Cars API
backend/services/cars-service/src/main/java/za/co/protogen/controller/CarsApiController.java - Cars logic
backend/services/cars-service/src/main/java/za/co/protogen/core/impl/CarsServiceImpl.java - Car repository
backend/services/cars-service/src/main/java/za/co/protogen/persistance/repository/CarRepository.java
Reservations domain
- Reservations API
backend/services/reservations-service/src/main/java/za/co/protogen/controller/ReservationsApiController.java - Reservation logic
backend/services/reservations-service/src/main/java/za/co/protogen/core/impl/ReservationServiceImpl.java - Reservation repository
backend/services/reservations-service/src/main/java/za/co/protogen/persistance/repository/ReservationRepository.java
Users domain
- Users API
backend/services/users-service/src/main/java/za/co/protogen/controller/UsersApiController.java - User logic
backend/services/users-service/src/main/java/za/co/protogen/core/impl/UserServiceImpl.java - User repository
backend/services/users-service/src/main/java/za/co/protogen/persistance/repository/UserRepository.java
Other components
- Renter
- Service databases
Connections 37
- Renter → Next.js app: uses
- Next.js app → Sign-in / registration: opens
- Sign-in / registration → NextAuth: signs in
- NextAuth → OAuth2 server: requests token
- Sign-in / registration → Next.js app: registers
- Next.js app → Car management: manages cars
- Next.js app → Reservation management: manages bookings
- Next.js app → User management: manages users
- Next.js app → Dashboard: views metrics
- Car management → API client: API calls
- Reservation management → API client: API calls
- User management → API client: API calls
- Dashboard → API client: API calls
- API client → API gateway: bearer requests
- API gateway → Cars API: routes
- API gateway → Reservations API: routes
- API gateway → Users API: routes
- Cars API → Cars logic: invokes
- Cars logic → Car repository: queries / writes
- Car repository → Service databases: persists
- Reservations API → Reservation logic: invokes
- Reservation logic → Reservation repository: queries / writes
- Reservation repository → Service databases: persists
- Users API → User logic: invokes
- User logic → User repository: queries / writes
- User repository → Service databases: persists
- Cars logic → OAuth2 server: validates JWT
- Reservations API → OAuth2 server: validates JWT
- Users API → OAuth2 server: validates JWT
- API gateway → Eureka registry: discovers services
- Cars API → Eureka registry: registers
- Reservations API → Eureka registry: registers
- Users API → Eureka registry: registers
- API gateway → Config server: loads config
- Cars API → Config server: loads config
- Reservations API → Config server: loads config
- Users API → Config server: loads config