Files
app-28210374/.vibecoder/plan.md
T
2026-09-07 19:32:02 +05:30

92 lines
4.4 KiB
Markdown

# 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.