Follow this guide step-by-step to set up and run the project locally.
Ensure you have the following installed:
-
Clone the repository https://github.com/lhydl/cabs-2.0.git
-
IntelliJ IDEA https://www.jetbrains.com/idea/download/?section=windows
-
JDK 21 or later
-
Podman Desktop (recommended) https://podman-desktop.io/downloads
During installation, enable WSL and install all recommended components (podman-machine, etc.)
-
(Optional) Docker (can be used instead of Podman)
Open the following folders in IntelliJ as Gradle projects:
api-gatewaycore-serviceappointment-servicequeue-service
In core-service:
-
Open
application-docker.properties -
Ensure:
spring.liquibase.enabled=trueThis will auto-create tables and seed initial data on first run.
For each service:
-
Open the Gradle panel (right side in IntelliJ)
-
Navigate to:
Tasks → build -
Double-click:
bootJar -
Verify the JAR file is generated at:
./build/libs
Repeat for all 4 services.
From the project root (where docker-compose.yml is located):
podman compose up --build -ddocker compose up --build -dNote: The -d flag runs containers in the background (detached mode), while --build forces Docker to rebuild the images before launching.
You should see 6 running containers:
- frontend
- api-gateway
- core-service
- appointment-service
- queue-service
- mysql
-
Login:
Username: admin Password: admin
Stop any service (e.g. appointment-service or queue-service):
- The application will still function
- Only the affected module will show Service Unavailable
- Complete Section 1 (Steps 1–3)
podman machine start
minikube start --driver=podmanNavigate to the project root folder where the Kubernetes yaml files resides, then run each command:
minikube image build -t api-gateway:1.0 ./api-gateway
minikube image build -t core-service:1.0 ./core-service
minikube image build -t appointment-service:1.0 ./appointment-service
minikube image build -t queue-service:1.0 ./queue-service
minikube image build -t frontend:1.0 ./frontendAt the project root folder, run the following command:
kubectl apply -f .minikube dashboardminikube service frontendBrowser will open automatically.
Stop a service:
kubectl scale deployment appointment-service --replicas=0Restart it:
kubectl scale deployment appointment-service --replicas=1kubectl delete pod <pod-name>Kubernetes will:
- Automatically recreate the pod
- Demonstrate self-healing capability
To restart a service after rebuild:
kubectl rollout restart deployment <service-name>To view logs:
kubectl logs <pod-name>-
Node.js https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
-
Angular CLI:
npm install -g @angular/cli- VS Code (or any preferred editor)
- Open
frontendfolder in VS Code - Run:
npm run start-
Login:
Username: admin Password: admin
| Mode | URL | Notes |
|---|---|---|
| Docker | http://localhost:4200 | Full stack via containers |
| Kubernetes | auto-open | Uses Minikube service |
| Local FE | http://localhost:9000 | Frontend-only dev mode |
- Use Docker setup for quick testing
- Use Kubernetes setup for demoing scalability & resilience
- Use local frontend for UI development