forge icon indicating copy to clipboard operation
forge copied to clipboard

feat: Unified Kanban view across multiple projects

Open vasconceloscezar opened this issue 4 weeks ago • 0 comments

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/tasks view
  • 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

vasconceloscezar avatar Nov 27 '25 05:11 vasconceloscezar