I started learning Java with this project. Below are listed the features that I intend to learn and implement
- Http routes (verbs, params, body, etc.)
- Data persistence (JPA) with Postgres using Docker when developing
- DTO`s and Validation
- Page/Pageable
- Tests to services using in memory H2 database
- Docs with Swagger: Available in SERVER_URL:PORT/swagger-ui/index.html (e.g. http://localhost:8080/swagger-ui/index.html)
- Database migrations (Flyway)
- Exceptions Treatment - (GlobalExceptionHandler)
- Authentication: Maybe using Spring Security, JWT, AWS Cognito and/or Keycloack (must be role based)
- Terraform to provide AWS infra (vpc, subnet, database, ec2 or k8, etc.)
- Jenkins (ci and cd)
- Deploy AWS
Before you begin, ensure you have the following installed on your machine:
- Java JDK 17 or later
- Maven (latest version recommended)
- Docker (to run the database)
First, clone the repository to your local machine using the following command:
git clone https://github.com/your-username/your-repository.git
cd your-repositoryNavigate to the project directory and run the following command to install all required dependencies:
mvn clean installThis command will compile the project and download all necessary dependencies defined in the pom.xml file.
Make sure Docker is running on your machine. The spring-boot-docker-compose dependency will start docker with the database when you run the application.
You can start the Spring Boot application using the following command:
mvn spring-boot:runAlternatively, you can build a runnable JAR file and execute it:
mvn package
java -jar target/your-artifact-name.jarReplace your-artifact-name.jar with the actual name of the JAR file generated in the target directory.
Once the application is running, you can access it at http://localhost:8080 (or any other port specified in your application.properties file).