A full-stack Parking Management System built using Angular, Spring Boot Microservices, Eureka Service Discovery, and Spring Cloud API Gateway.
The system is deployed on Vercel (Frontend) and Render (Backend).
- User registration & login
- View available parking locations and slots
- Create parking bookings
- View booking history
- Manage profile
- Admin login
- Dashboard with system overview
- Manage parking locations
- Manage parking slots
- View all bookings
- API Gateway based routing
- Service discovery with Eureka
- Centralized authentication via gateway
- Health monitoring for all services
Angular Frontend (Vercel)
|
v
Spring Cloud API Gateway (Render)
|
v
+-----------------------------+
| Eureka Server |
+-----------------------------+
| | |
v v v
User Admin Booking Location
Service Service Service Service
- Angular 17+
- TypeScript
- RxJS
- Angular Router
- Deployed on Vercel
- Java 17
- Spring Boot
- Spring Cloud Netflix Eureka
- Spring Cloud Gateway
- Spring Data JPA
- PostgreSQL
- Deployed on Render
parking-management-system/
β
βββ frontend/
β βββ parking-management-frontend/ # Angular app
β
βββ backend/
β βββ api-gateway/ # Spring Cloud Gateway
β βββ eureka-server/ # Eureka Service Registry
β βββ user-service/ # User microservice
β βββ admin-service/ # Admin microservice
β βββ booking-service/ # Booking microservice
β βββ location-service/ # Location microservice
β
βββ README.md
https://pms-findmyspot.vercel.app/
Each backend service must explicitly override Eureka's default localhost value.
src/main/resources/application.properties
spring.application.name=admin-service
eureka.client.enabled=true
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=Your render url
localhost:8761 in production
Set the following environment variables in Render for each service:
SPRING_DATASOURCE_URL
SPRING_DATASOURCE_USERNAME
SPRING_DATASOURCE_PASSWORD
- Create a Render Web Service for each backend module
- Set Java version to 17
- Add required environment variables
- Enable Clear Build Cache on redeploy
- Deploy in this order:
- Eureka Server
- Admin Service
- User Service
- Booking Service
- Location Service
- API Gateway
- Go to https://vercel.com
- Import GitHub repository
- Configure:
- Framework: Angular
- Root Directory:
frontend/parking-management-frontend - Build Command:
npm run build -- --configuration production - Output Directory:
dist/parking-management
- Deploy π
All frontend API calls go through API Gateway only.
Example:
https://api-gateway-52yp.onrender.com/api/users/login
https://api-gateway-52yp.onrender.com/api/admin/login
Frontend never calls individual microservices directly.
Each service exposes:
/actuator/health
Example:
https://api-gateway******r.com/actuator/health
β Ensure Eureka URL is explicitly overridden
β Remove all localhost:8761 references
β Clear build cache before redeploy
β CORS handled at API Gateway level
β Gateway allows .vercel.app origins
β Ensure correct output directory
β Ensure SPA routing handled properly
β Remove unused JS script references
- Eureka defaults to
localhost:8761if not overridden application.propertieshas highest priority- Clearing build cache on Render is essential
- API Gateway must be deployed after all services
- Frontend must always talk to the gateway
MV Sujan Kumar
Full Stack Developer
Spring Boot | Angular | Microservices
If you found this project helpful, please βοΈ the repository!
Happy Coding π