A task management RESTful API built with Spring Boot, PostgreSQL, Lombok and MapStruct.
- User authentication with Spring Security
- Token-based authentication
- Task creation, assignment, and status updates
- Commenting system per task
- PostgreSQL integration for persistence
- Clean architecture with MapStruct for DTO mapping
- Java 21
- Spring Boot
- Spring Security
- Spring Data JPA
- PostgreSQL
- MapStruct
-
Clone the repository
-
Create PostgreSQL database and user
Example using psql terminal:
CREATE DATABASE task_manager; CREATE USER task_user WITH ENCRYPTED PASSWORD 'task_password'; GRANT ALL PRIVILEGES ON DATABASE task_manager TO task_user;
- Update application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/task_manager spring.datasource.username=task_user spring.datasource.password=task_password spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=true logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
- Run the application:
Use your IDE (e.g. IntelliJ) to run the TaskManagerApplication main class, or from terminal:
./gradlew bootRun
- Access the API:
By default, the application runs on:
http://localhost:8080
- Testing Run all tests with:
./gradlew test