Files

2.4 KiB

Phase 4 Notes (T6)

Pages built

  • Tasks (/tasks): Kanban board with dnd-kit drag-and-drop between 4 status columns (Todo, In Progress, Done, Cancelled) + List view with TanStack Table. Create/edit via dialog/side panel. Optimistic updates via TanStack Query mutations.
  • Habits (/habits): List with streak display, 7-day mini completion grid, "Mark complete" button. Create/edit via dialog/side panel. History tab shows completion log.
  • Projects (/projects): Card grid with progress bars. Detail panel with Overview/Tasks/Sections tabs. Create/edit via dialog.
  • Notes (/notes): Two-pane layout (list + contentEditable editor). Backlinks and version history toggles. Auto-save on 500ms debounce.
  • Calendar (/calendar): Month grid with date-fns. Events from API displayed with color coding. Create/edit/delete via dialogs.
  • Graph (/graph): SVG-based circular layout visualization. Filter panel for entity types. Node detail panel. Full react-force-graph-2d integration deferred to T8.
  • Search (/search): Debounced cross-entity search. Type filter chips. Recent searches in localStorage. Results grouped by type with highlighted snippets.

Shared infrastructure

  • src/hooks/use-realtime.ts: SSE hook subscribing to /api/realtime with exponential backoff reconnect. Invalidates TanStack Query caches on entity events.
  • src/components/entities/entity-detail-panel.tsx: Reusable Sheet-based side panel.
  • src/lib/types/index.ts: Shared TypeScript interfaces for all entities.

Packages installed

  • @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities
  • @tiptap/react, @tiptap/starter-kit, @tiptap/extension-placeholder, @tiptap/extension-mention, @tiptap/extension-task-list, @tiptap/extension-task-item, @tiptap/extension-link, @tiptap/extension-code-block-lowlight, @tiptap/pm, @tiptap/suggestion
  • recharts
  • react-big-calendar
  • react-force-graph-2d
  • react-hook-form, @hookform/resolvers
  • @tanstack/react-table
  • date-fns

Notes for T7

  • useApiQuery / useApiMutation patterns in src/lib/api.ts are the standard for all data fetching
  • EntityDetailPanel in src/components/entities/ is reusable for any entity
  • Forms use controlled state (not react-hook-form yet - T7 can upgrade)
  • Calendar and Graph use basic implementations; T8 will formalize with react-big-calendar and react-force-graph-2d
  • TipTap is installed but Notes page uses a simple contentEditable for now; T7/T8 can upgrade to full TipTap