REST API gateway service that provides HTTP endpoints and connects to via gRPC.
- Java 21
- Maven 3.9+
- Docker & Docker Compose (for containerized deployment)
- Downstream services running, configured in
application.yaml
Make sure to have up-to-date repo of each service then run the following for each individual service:
docker compose upIn IntelliJ run configurations add SPRING_PROFILES_ACTIVE=local environment variable OR run the app with:
./mvnw spring-boot:run -Dspring-boot.run.profiles=localRouter connects to localhost:50051, localhost:50052, localhost:50053, localhost:50054
Run whichever service you want to be in Docker with:
docker compose upThen in your .env file, change the urls of the service running locally and run
source .env.localIn IntelliJ run configurations add SPRING_PROFILES_ACTIVE=local environment variable OR run the app with:
./mvnw spring-boot:run -Dspring-boot.run.profiles=localBuild the application:
./mvnw clean package -DskipTestsRun the service:
./mvnw spring-boot:runService will start on http://localhost:8080
Build and run:
docker compose upThis builds the application inside the container and starts the service.
Stop the service:
docker compose downInteractive API documentation is available via Swagger UI:
http://localhost:8080/swagger-ui.html
OpenAPI JSON spec:
http://localhost:8080/v3/api-docs
- Spring Boot 3.5.6 - REST API framework
- gRPC Client - Communication with User Service
- Protocol Buffers - Data serialization
- SpringDoc OpenAPI - API documentation
- Maven - Build tool
- Docker - Containerization