An Implementation that will allow CRUD operations for managing fictional tasks.
Please find document for the APIs here
As part of the implementation, I have used docker compose to manage postgres and redis. The docker compose is managed by spring boot starter docker compose for ease of development.
To reduce the friction managing database changes, i've used liquibase. This allows environment provision where all the required tables and initial data are added via liquibase migrations.
To enable ease of testing both unit and integration tests, i've integrated testcontainers.
For building and running the application you need:
As a prerequisite, please ensure that you have installed docker.
./gradlew clean bootRun
For the test to be green, please ensure that docker is installed and running.
./gradlew clean test