Project Hub with Kanban board for task/idea tracking
Go to file
2026-02-19 23:34:46 -06:00
comps Add sprint support to data model and API 2026-02-19 17:21:21 -06:00
public Initial commit from Create Next App 2026-02-17 22:55:29 -06:00
src Migrate task persistence to SQLite and remove legacy JSON store 2026-02-19 23:34:46 -06:00
.gitignore Migrate task persistence to SQLite and remove legacy JSON store 2026-02-19 23:34:46 -06:00
eslint.config.mjs Initial commit from Create Next App 2026-02-17 22:55:29 -06:00
next.config.ts Initial commit from Create Next App 2026-02-17 22:55:29 -06:00
package-lock.json Migrate task persistence to SQLite and remove legacy JSON store 2026-02-19 23:34:46 -06:00
package.json Migrate task persistence to SQLite and remove legacy JSON store 2026-02-19 23:34:46 -06:00
postcss.config.mjs Initial commit from Create Next App 2026-02-17 22:55:29 -06:00
README.md Migrate task persistence to SQLite and remove legacy JSON store 2026-02-19 23:34:46 -06:00
tsconfig.json Complete rewrite: Project Hub with Kanban board and threaded notes 2026-02-18 09:32:47 -06:00

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

npm install
npm run dev

Open http://localhost:3000.

Scripts

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.