Task Manager is a RESTful Java Spring Boot application that allows users to manage tasks efficiently. It supports features like creating, updating, filtering, and retrieving tasks with support for pagination, due dates, and tags. It also provides endpoints to fetch expired or completed tasks.
- Java 17
- Spring Boot 3.x
- Maven
- Hibernate + JPA
- H2 / MySQL (or any RDBMS)
com.project.taskmanager
โ
โโโ controller # REST Controllers
โโโ dto # Data Transfer Objects
โโโ exception # Custom exceptions
โโโ model # Entity classes
โโโ repository # Spring Data JPA Repositories
โโโ service # Business Logic Layer
โโโ constant # Application-wide constants & enums
โโโ TaskManagerApplication.java
POST /tasks
Body: TaskRequest
PUT /tasks?id={id}
Body: TaskRequest
GET /tasks?page=0&size=5
GET /tasks/{id}
GET /tasks/upcoming?days=3
GET /tasks/dueToday
DELETE /tasks/{id}
GET /category
GET /tasks/tags?tags=tag1,tag2
POST /tasks/filtering
Body: Partial TaskRequest
GET /expiredTasks
GET /completedTasks
Each task supports the following priorities and statuses:
| Priority | Description |
|---|---|
| URGENT | Needs immediate action |
| HIGH | Important but not critical |
| MEDIUM | Moderate importance |
| LOW | Can be done later |
| Status | Description |
|---|---|
| TODO | Task planned, not started |
| IN_PROGRESS | Currently being worked on |
| INCOMPLETE | Work started but not finished |
| DONE | Task completed |
- Uses
jakarta.validationannotations to validate input. - Throws
ResourceNotFoundExceptionwith custom messages.
git clone https://github.com/SoumyaShinde/taskManager.git
cd taskManager
./mvnw spring-boot:run
Build Docker image
docker build -t taskmanager:latest .
Run Docker container
docker run -p 8080:8080 taskmanager:latest
Access the app at: http://localhost:8080
- Can switch between H2 and other RDBMS by updating
application.properties.
- Soumya Shinde
Feel free to contribute or raise issues! ๐