| Endpoint | Operation | Input | Output | Description |
|---|---|---|---|---|
| /api/tasks | POST | TaskDto(JSON) | TaskDto(JSON) | Adds a new task and returns the added value |
| /api/tasks/all | GET | - | List(JSON) | Retrieves all tasks |
| /api/tasks | GET | Task ID (JSON) | TaskDto(JSON) | Retrieves a task by it's Id |
| /api/tasks | PUT | TaskDto(JSON) | TaskDto(JSON) | Updates a task |
| /api/tasks | DELETE | Task ID (JSON) | - | Deletes a task by id |
- Ability to do CRUD operations on tasks
- Ability to be docker deployable
- Implement Model, Controller, Repository, and Service layers
- Use in-memory storage for tasks
- Implement validation for task fields
- Use DTOs for data transfer between layers
- Implement exception handling
- Use PostgreSQL with JPA(Hibernate) task storage
- Implement report entity with fields: id, description, hours logged, date created, task id
- Queries:
- Add report to a task
- Get all reports of a task
- Get specific report of a task
- Update report of a task
- Delete report of a task
- Get all reports of a task with hours logged within a specific date range
- Get the report of a task with the most hours logged
- Get total hours logged for a task by id
- Queries:
- Implement user registration and authentication
- Implement user roles
- Implement user-specific tasks
- Implement JWT for user authentication