---
wave: 1
depends_on: []
files_modified: 
  - prisma/schema.prisma
  - src/app/api/tasks/route.ts
  - src/components/TaskItem.tsx
autonomous: true
gap_closure: true
---

# Plan 02-01: Implement Database Schema and API Endpoints

## Objective
Implement the database schema and API endpoints required for task management functionality.

## Tasks

1. **Add Task model to Prisma schema**
   - Add a `Task` model to `prisma/schema.prisma` 
   - Include fields: `id` (UUID), `title` (String), `description` (String?), `completed` (Boolean), `createdAt` (DateTime), `updatedAt` (DateTime)
   - Add proper indexes and relations

2. **Create Task Creation API Endpoint**
   - Create POST `/api/tasks` endpoint in `src/app/api/tasks/route.ts`
   - Implement validation for required fields
   - Save new task to database using Prisma
   - Return created task with appropriate HTTP status

3. **Create Task Retrieval API Endpoint**
   - Create GET `/api/tasks` endpoint in `src/app/api/tasks/route.ts`
   - Retrieve all tasks from database
   - Return tasks with appropriate HTTP status

4. **Create Task Update API Endpoint**
   - Create PUT `/api/tasks/:id` endpoint in `src/app/api/tasks/route.ts`
   - Implement validation for required fields
   - Update existing task in database using Prisma
   - Return updated task with appropriate HTTP status

5. **Create Task Deletion API Endpoint**
   - Create DELETE `/api/tasks/:id` endpoint in `src/app/api/tasks/route.ts`
   - Delete existing task from database using Prisma
   - Return appropriate HTTP status

6. **Create Task Completion Toggle API Endpoint**
   - Create PATCH `/api/tasks/:id/complete` endpoint in `src/app/api/tasks/route.ts`
   - Toggle the `completed` status of a task
   - Return updated task with appropriate HTTP status

7. **Create TaskItem Component**
   - Create `src/components/TaskItem.tsx` component
   - Display task title, description, and completion status
   - Include edit and delete buttons
   - Handle click events for toggling completion status

8. **Define Task Model TypeScript**
   - Create `src/types/task.ts` with proper TypeScript definitions
   - Define Task interface with all required fields

## Verification Criteria
- [ ] Prisma schema includes Task model with all fields
- [ ] All API endpoints are implemented and accessible
- [ ] TaskItem component renders properly
- [ ] Task model TypeScript definitions are correct
- [ ] All endpoints return appropriate HTTP status codes
- [ ] Database operations work correctly

## Must-Haves
- User can create tasks with title and description
- User can edit existing tasks
- User can delete tasks
- User can mark tasks as complete/incomplete