forge
forge copied to clipboard
feat: Unified Kanban view across multiple projects
Summary
Add a unified Kanban view on the Home page that displays tasks from multiple selected projects in a single board.
User Story
As a user managing multiple projects, I want to see all my tasks from different projects in one unified Kanban view, so I can get a holistic overview of my work without switching between individual project views.
Requirements
Core Features
- Toggle on Home page (
/projects?view=grid|kanban) - Multi-select project filter with "Select All" option
- Project badges on task cards (color-coded, abbreviated, clickable)
- Additional filters: status, executor, search
- Same Kanban behavior as current
/projects/:projectId/tasksview - LocalStorage persistence for selected projects
- Empty state when no projects selected
- Max project selection limit (10 projects)
Task Panel Behavior
When clicking a task in unified view:
- Keep unified Kanban visible on left
- Show task detail panel on right
- Task panel shows only the task's project tasks (not all unified tasks)
Project Badge
- Color-coded (consistent per project)
- Abbreviated when needed (max 20 chars)
- Clickable → Navigate to
/projects/:projectId/tasks
Technical Approach
Implementation (Frontend-only, ~480 lines)
New Components:
UnifiedKanban.tsx- Main orchestrator (~150 lines)ProjectFilterBar.tsx- Multi-select with chips (~120 lines)AdditionalFilters.tsx- Status/executor/search (~80 lines)useUnifiedTasks.ts- Data aggregation hook (~50 lines)
Modified Components:
projects.tsx- Add view toggle (+60 lines)TaskCard.tsx- Add project badge (+15 lines)
Data Fetching
- Start with polling approach (5-10s interval)
- Fetch tasks from selected projects in parallel
- Merge client-side
- Apply filters (status, executor, search)
Performance Considerations
- Max 10 projects selection limit
- Loading skeleton while fetching
- Virtualization if >100 tasks per column (Phase 2)
- Only poll when tab is active (Page Visibility API)
Success Criteria
- User can toggle between Grid and Kanban views on Home page
- User can select multiple projects via dropdown filter
- Selected projects persist across page refreshes (localStorage)
- Task cards show project badge with color coding
- Clicking project badge navigates to that project's view
- Additional filters (status, executor, search) work correctly
- Task panel shows only the task's project tasks (not all unified)
- Drag-and-drop works same as current Kanban (status changes only)
- Empty state shown when no projects selected
- Performance acceptable with 10 projects × 50 tasks = 500 tasks
Out of Scope (Phase 2)
- Cross-project task drag-and-drop (move task to different project)
- WebSocket real-time updates (start with polling)
- Custom project color settings
- Virtualization (only if performance issues observed)
- Backend aggregation endpoint (only if needed for performance)
Risks & Mitigations
| Risk | Mitigation |
|---|---|
| Multiple API calls on load | Loading skeleton, max 10 projects limit |
| Polling overhead | 10s interval, only poll when tab active |
| Context switching confusion | Breadcrumbs, "Back to Unified View" button |
| Empty state with filters | Clear messaging, "Clear Filters" button |
Timeline
Phase 1 (MVP): ~11 hours (1.5 days)
Design Reference
Full technical plan available at: /tmp/genie/one-kanban-unified-view-FINAL-plan.md