# Project Tasks List

## Task 1: Implement Task Creation [FULL-STACK]
Implement the functionality to allow users to create new tasks with a description and an optional due date. This includes both frontend (UI for input) and backend (data persistence) aspects.

### 1.1 Backend: Define To-Do Item Model
- [x] Create `Todo.java` entity with fields: `id`, `title`, `description`, `completed`, `dueDate`.
- [x] Create `TodoRepository.java` interface extending `JpaRepository`.

### 1.2 Backend: Implement To-Do Item Service
- [x] Create `TodoService.java` with methods for creating a To-Do item.

### 1.3 Backend: Implement To-Do Item Controller
- [x] Create `TodoController.java` with a POST endpoint for creating To-Do items.

### 1.4 Frontend: Create To-Do Item Model
- [ ] Create `todo.model.ts` interface with fields: `id`, `title`, `description`, `completed`, `dueDate`.

### 1.5 Frontend: Create To-Do Service
- [ ] Create `todo.service.ts` with a method for creating a To-Do item (calling backend API).

### 1.6 Frontend: Create To-Do Creation Component
- [ ] Create `todo-create.component.ts`, `todo-create.component.html`, `todo-create.component.scss`.
- [ ] Implement a form for title, description, and due date.
- [ ] Call `todo.service.ts` to create the To-Do item.

### 1.7 Frontend: Add Routing for To-Do Creation
- [ ] Update `app-routing.module.ts` to include a route for the To-Do creation component.

## Task 2: Implement Task Status Management [FULL-STACK]
Develop the feature that enables users to mark tasks as complete and update their completion status. This involves updating the task data and reflecting the change in the user interface.

## Task 3: Implement Task Editing [FULL-STACK]
Enable users to modify existing tasks, specifically their description and due date. This task covers both the UI for editing and the logic for updating the task in storage.

## Task 4: Implement Task Deletion [FULL-STACK]
Provide the functionality for users to delete tasks from their list. This includes the UI interaction for deletion and the removal of the task from data storage.

## Task 5: Implement Task Listing, Filtering, and Sorting [FULL-STACK]
Develop the core functionality to display a list of all tasks. This task also includes implementing features to filter tasks by their completion status (complete/incomplete) and to sort tasks by their due date (ascending/descending).

## Current Task Status
**Currently Working On:** Task 1 - 1.4 Frontend: Create To-Do Item Model
**Next Task:** Task 2 - Implement Task Status Management [FULL-STACK]
**Completed Tasks:** None

## Task Completion Guidelines
- Use `- [x]` to mark completed subtasks (to be added by Developer)
- Use `- [ ]` for pending subtasks (to be added by Developer)
- Update "Currently Working On" when starting a new subtask (to be managed by Developer)
- Update "Completed Tasks" when finishing a task (to be managed by Developer)
- Always maintain the hierarchical structure (Task → Subtask → Subtask items)
- **IMPORTANT: Do NOT add subtasks here. Only create main tasks. Subtasks will be added by the Developer agent.**