- Project setup and configuration
- Core framework setup
- Database setup
- Domain model and repository layer
- Service layer
- API layer (controllers)
- Security configuration
- Error handling
- Data validation
- Logging configuration
- Monitoring and metrics
- API documentation
- Message Queue and event-driven architecture
- Caching mechanism
- Batch processing
- Scheduled tasks
- File handling and resource management
- Performance optimization
- Containerization and Local deployment
- CI/CD integration BONUS
- Testing OWSAP top 10 vulnerabilities
- Docker
- Java 17
- Gradlew 8.*
- Jacoco
- SonarQube 4.*
As it will be used Postgres and H2, we need to create two profiles on the application.yml file.
./gradlew bootRun --args='--spring.profiles.active=prod'./gradlew bootRun --args='--spring.profiles.active=dev'## Database setup
1. PostgreSQL
```bash
dependencies {
runtimeonly 'org.postgresql:postgresql'
}- H2
dependencies {
runtimeonly 'com.h2database:h2'
}- All the required configuration on the build.gradle file.
- Pull the image from Docker Hub
docker pull sonarqube- Run the image
docker run -d --name sonarqube -p 9000:9000 sonarqube- Access the SonarQube dashboard
http://localhost:9000- Run scan
./gradlew sonar- Stop the container
docker stop sonarqube