92 lines
4.4 KiB
Markdown
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.
|