Agent turn complete
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# AI Task Kanban Board
|
||||
|
||||
## What We're Building
|
||||
|
||||
A clean, minimal kanban board for managing AI tasks across five workflow stages: TODO, IN PROGRESS, QA, UAT, and PROD. Users can create, edit, and drag tasks between columns, filter by priority or tags, search for tasks, and view full details in a modal. All data persists to a local SQLite database. No login required — single-user app.
|
||||
|
||||
## How It Works for the User
|
||||
|
||||
1. **Main Board**: Five columns (TODO, IN PROGRESS, QA, UAT, PROD) display task cards.
|
||||
2. **Create/Edit**: Click "Add Task" or a card to open a modal with fields: Title, Description, Priority (Low/Medium/High), Due Date, Assignee, Tags (comma-separated), Time Estimate (hours).
|
||||
3. **Drag & Drop**: Drag cards between columns to move tasks through the workflow.
|
||||
4. **Filter & Search**: Filter by priority or tag; search by title/description in real time.
|
||||
5. **Task Details**: Click a card to view/edit all fields in a modal.
|
||||
6. **Recurring Tasks**: Mark a task as recurring; when moved to PROD, it auto-creates a copy in TODO (optional, can be toggled per task).
|
||||
|
||||
## Key Decisions & Why
|
||||
|
||||
- **No Auth**: Single user, no need for login or roles.
|
||||
- **SQLite**: Lightweight, file-based, no external database needed.
|
||||
- **Drag-and-Drop**: React Beautiful DnD or similar for smooth UX.
|
||||
- **Inline Editing**: Modal-based for simplicity; avoids complex inline form state.
|
||||
- **Clean UI**: Minimal design with card-based layout, no dark mode or heavy styling.
|
||||
- **Recurring Tasks**: Simple flag on the task; when moved to PROD, a new copy spawns in TODO.
|
||||
|
||||
## Technical Details
|
||||
|
||||
### Frontend (React)
|
||||
- **Main Page**: `/` — Kanban board with five columns.
|
||||
- **Components**:
|
||||
- `KanbanBoard`: Renders columns and handles drag-and-drop.
|
||||
- `TaskCard`: Displays task summary (title, priority badge, due date, assignee).
|
||||
- `TaskModal`: Create/edit form with all fields.
|
||||
- `FilterBar`: Priority and tag filters, search input.
|
||||
- **State**: React hooks (useState, useContext) for tasks, filters, modal state.
|
||||
- **Styling**: Tailwind CSS for clean, minimal design.
|
||||
|
||||
### Backend (FastAPI)
|
||||
- **Database**: SQLite at `./data/app.db`.
|
||||
- **Models**:
|
||||
- `Task`: id, title, description, priority (enum: Low/Medium/High), due_date, assignee, tags (JSON array), time_estimate (int, hours), column (enum: TODO/IN_PROGRESS/QA/UAT/PROD), recurring (bool), created_at, updated_at.
|
||||
- **Endpoints**:
|
||||
- `GET /api/tasks` — List all tasks (optionally filtered by column, priority, tag).
|
||||
- `POST /api/tasks` — Create a new task.
|
||||
- `GET /api/tasks/{id}` — Get task details.
|
||||
- `PUT /api/tasks/{id}` — Update a task.
|
||||
- `DELETE /api/tasks/{id}` — Delete a task.
|
||||
- `PUT /api/tasks/{id}/column` — Move task to a new column (handles recurring logic).
|
||||
- `GET /api/health` — Health check (returns `backend: sqlite`).
|
||||
- **Recurring Logic**: When a task with `recurring=true` is moved to PROD, the backend creates a new task with the same title, description, priority, assignee, tags, and time_estimate in the TODO column.
|
||||
|
||||
### Data Model
|
||||
```
|
||||
Task:
|
||||
- id: UUID (primary key)
|
||||
- title: str (required)
|
||||
- description: str (optional)
|
||||
- priority: enum (Low, Medium, High)
|
||||
- due_date: date (optional)
|
||||
- assignee: str (optional)
|
||||
- tags: list[str] (stored as JSON)
|
||||
- time_estimate: int (hours, optional)
|
||||
- column: enum (TODO, IN_PROGRESS, QA, UAT, PROD)
|
||||
- recurring: bool (default: false)
|
||||
- created_at: datetime
|
||||
- updated_at: datetime
|
||||
```
|
||||
|
||||
### Assumptions & Defaults
|
||||
- Single user, no authentication.
|
||||
- Tags are comma-separated strings in the UI, stored as JSON arrays in the database.
|
||||
- Priority defaults to "Medium".
|
||||
- Due dates are optional; cards without due dates show no date badge.
|
||||
- Assignee is a free-text field (no user management).
|
||||
- Time estimate is in hours; optional.
|
||||
- Recurring tasks only auto-create when moved to PROD (not on a schedule).
|
||||
- No undo/redo; changes are immediate.
|
||||
|
||||
### Out of Scope
|
||||
- User authentication or multi-user support.
|
||||
- Recurring task scheduling (cron-based).
|
||||
- Task history or audit logs.
|
||||
- Notifications or reminders.
|
||||
- Export/import (CSV, JSON).
|
||||
- Dark mode or theme customization.
|
||||
- Mobile-responsive design (desktop-first).
|
||||
- Subtasks or task dependencies.
|
||||
- Comments or activity feed.
|
||||
- Analytics or reporting.
|
||||
|
||||
## Scope
|
||||
Depth: MVP. Something they could actually use: the core flow end to end, real persisted data, auth ONLY if the app is meaningless without it, sensible empty and error states. No test suite, no roles, no CI.
|
||||
Reference in New Issue
Block a user