Taskr is a Spring Boot REST API for managing tasks with CRUD operations, soft deletes, pagination, and JWT authentication.
- Java 21
- Spring Boot 3.x (Web, Data JPA, Security, Actuator)
- PostgreSQL + Flyway for database migrations
- MinIO for object storage (attachments)
- Docker, Docker Compose
- Maven 3.x
- Java 21 (JDK)
- Docker & Docker Compose
- Maven 3.x
- Copy
.env.exampleto.envand set required variables (DB_USERNAME,DB_PASSWORD,JWT_SECRET, etc.) - Build and start containers:
App will be available at http://localhost:8080
docker-compose up --build -d
- Make sure PostgreSQL and MinIO are running (or use
STORAGE_PROVIDER=localto store files locally) - Start the app:
Dev profile is used by default.
./mvnw spring-boot:run
Swagger UI is available at:
http://localhost:8080/swagger-ui/index.html
src/main/java– application source code (controllers, services, repositories, DTOs, etc.)src/main/resources– config files (application-*.yml, DB migrations underdb/migration, etc.)src/test– unit/integration tests (JUnit, Testcontainers)Dockerfile– builds the app Docker imagedocker-compose.yml– defines app, PostgreSQL, and MinIO servicespom.xml– Maven configuration (dependencies, plugins, JDK version)
Stateless JWT authentication. After login, the client receives an access token (JWT) and a refresh token. The refresh token is stored in the database and used to obtain a new access token when the previous one expires.
The project includes unit and integration tests. Integration tests use Testcontainers to run PostgreSQL in a temporary container. Run all tests with:
mvn test