gantt-board/README.md

101 lines
2.3 KiB
Markdown

# Gantt Board
Task and sprint board built with Next.js + Zustand and SQLite-backed API persistence.
## Current Product Behavior
### Data model and status rules
- Tasks use labels (`tags: string[]`) and can have multiple labels.
- There is no active `backlog` status in workflow logic.
- A task is considered in Backlog when `sprintId` is empty.
- Current status values:
- `open`
- `todo`
- `blocked`
- `in-progress`
- `review`
- `validate`
- `archived`
- `canceled`
- `done`
- New tasks default to `status: open`.
### Labels
- Project selection UI for tasks was removed in favor of labels.
- You can add/remove labels inline in:
- New Task modal
- Task Detail modal
- Label entry supports:
- Enter/comma to add
- Existing-label suggestions
- Quick-add chips
- Case-insensitive de-duplication
### Backlog drag and drop
Backlog view supports moving tasks between:
- Current sprint
- Other sprint sections
- Backlog
Status behavior on drop:
- Drop into any sprint section: `status -> open`
- Drop into backlog section: `status -> open`
- `sprintId` is set/cleared based on destination
Changes persist through store sync to SQLite.
### Kanban drag and drop
Kanban supports drag by visible left handle on each task card.
Columns:
- `To Do` contains statuses: `open`, `todo`
- `In Progress` contains statuses: `blocked`, `in-progress`, `review`, `validate`
- `Done` contains statuses: `archived`, `canceled`, `done`
Drop behavior:
- Drop on column body: applies that column's default status
- `To Do` -> `open`
- `In Progress` -> `in-progress`
- `Done` -> `done`
- Drop on status chip target: applies exact status
- Drop on a task: adopts that task's exact status
During drag, the active target column shows expanded status drop zones for clarity.
### Layout
- Left sidebar cards (Current Sprint and Labels quick view) were removed.
- Main board now uses full width for Kanban/Backlog views.
## Persistence
- Client state is managed with Zustand.
- Persistence is done via `/api/tasks`.
- API reads/writes `data/tasks.db` (SQLite).
## Run locally
```bash
npm install
npm run dev
```
Open `http://localhost:3000`.
## Scripts
```bash
npm run dev
npm run build
npm run start
npm run lint
```
## Notes
- You may see a Next.js warning about multiple lockfiles and inferred workspace root. This is non-blocking for local dev.