- Docker
- Maven 3
- JDK 17
- (Optional) IntelliJ as preferred IDE for out of the box run configurations
- Language: Java 17
- Framework: Spring Boot 3.0.7
- Testing: JUnit Jupiter, MockMVC, TestContainers, Cucumber
- Build tool: Maven
- API Doc: Swagger
- Containers: Docker, Docker compose
- Libraries: Lombok
- Authentication: JWT
- Database: PostgreSQL
- CI: GitHub Actions
- Build
- Code coverage report
- OWASP Dependencies checker
- Architecture: Modulith with Hexagonal architecture + CQRS + pub/sub events with Axon Server
The aim of this logical separation by feature/domain is keep delivering the application as a monolith due its simplicity but let us promote those modules which could require scalability in human/resource terms in an easy way.
- Build the application:
mvn clean install
- Start up Docker compose:
cd application
docker-compose up
IntelliJ: Choose the Run Configuration "Docker compose up" and click the▶️ icon - Go to browser and check the REST api documentation: http://localhost:8000/swagger-ui/index.html
- Track the commands, queries and events that are being sent across the system: http://localhost:8024/
- Choose the Run Configuration "Debug Bank application" and click the 🐛 icon
It will run the docker-compose-debug configuration firstly and attach to the process at port 5005 afterward
- Commit and push your changes
- Automatically a new workflow execution is triggered