Add project and task management with scheduling and notifications
All checks were successful
continuous-integration/drone/push Build is passing

Introduced `Project` and `Task` entities, along with supporting services, repositories, and APIs. Added features for project-based and household-level task management, including creation, listing, updates, and validation. Implemented scheduled notifications for tasks due tomorrow. Updated Flyway migrations, configuration files, and tests to support these functionalities.
This commit is contained in:
Urban Modig
2025-10-08 11:07:15 +02:00
parent 84d7647481
commit e0d041ef67
21 changed files with 828 additions and 20 deletions

View File

@ -28,7 +28,7 @@ Authorization: Bearer {{token}}
"name": "Familjen Andersson"
}
> {% client.global.set("householdId", JSON.parse(response.body).id); %}
> {% client.global.set("householdId", response.body.id); %}
### 5. List my households
GET http://localhost:8080/api/v1/households
@ -53,3 +53,68 @@ Authorization: Bearer {{token}}
### 8. List members again (should now include Ulf)
GET http://localhost:8080/api/v1/households/{{householdId}}/members
Authorization: Bearer {{token}}
### 9) Create project (OWNER only)
POST http://localhost:8080/api/v1/projects
Content-Type: application/json
Authorization: Bearer {{token}}
{
"householdId": "{{householdId}}",
"name": "Sovrumsrenovering",
"description": "Måla, golv, el"
}
> {% client.global.set("projectId", response.body.id); %}
### 10) List projects in household
GET http://localhost:8080/api/v1/households/{{householdId}}/projects
Authorization: Bearer {{token}}
### 11) Create task
POST http://localhost:8080/api/v1/tasks
Content-Type: application/json
Authorization: Bearer {{token}}
{
"projectId": "{{projectId}}",
"title": "Damsug soffan",
"priority": "LOW"
}
> {% client.global.set("taskId", response.body.id); %}
### 12) List tasks
GET http://localhost:8080/api/v1/projects/{{projectId}}/tasks
Authorization: Bearer {{token}}
### 13) Update task
PATCH http://localhost:8080/api/v1/tasks/{{taskId}}
Content-Type: application/json
Authorization: Bearer {{token}}
{
"status": "DONE"
}
### 14) Create a household-level task (no project)
POST http://localhost:8080/api/v1/households/{{householdId}}/tasks
Content-Type: application/json
Authorization: Bearer {{token}}
{
"title": "Buy milk",
"priority": "HIGH"
}
> {% client.global.set("taskId", response.body.id); %}
### 15) List household-level tasks
GET http://localhost:8080/api/v1/households/{{householdId}}/tasks
Authorization: Bearer {{token}}
### 16) My tasks due tomorrow
GET http://localhost:8080/api/v1/tasks/due/tomorrow
Authorization: Bearer {{token}}