101 lines
2.3 KiB
Markdown
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.
|