feat: implement task dependencies with blocking/blocked-by relationships (#3185)#3209
feat: implement task dependencies with blocking/blocked-by relationships (#3185)#3209knoxiboy wants to merge 3 commits into
Conversation
GSSoC Label Checklist 🏷️@Priyanshu-byte-coder — please apply the appropriate labels before merging: Difficulty (pick one):
Quality (optional):
Validation (required to score):
|
|
Thanks for the substantial effort here, but this is out of scope for DevTrack. DevTrack is a GitHub-activity analytics dashboard (contribution/streak/PR insights), not a project-management tool — and this PR is part of a ~12k-line Kanban/task-management system (boards, stages, tasks, dependencies, task notifications, activity feed) that adds a whole new product surface ( |
Summary
This PR implements task dependencies with blocking/blocked-by relationships for the Kanban board. It supports adding/removing dependencies, displaying visual indicators on cards, and enforcing a drag-and-drop rule preventing blocked tasks from being moved to the final "Done" column until all blocking tasks are completed.
Closes #3185
Type of Change
What Changed
supabase/migrations/20260715000002_add_task_dependencies.sql: Createdtask_dependenciesjoin table with RLS policies, indexing, self-dependency prevention check, and a unique pair constraint.src/app/api/kanban/[projectId]/route.ts: UpdatedGETquery to fetch all task dependency mappings.src/app/api/kanban/[projectId]/tasks/[taskId]/dependencies/route.ts: Created endpoints toPOST(create) andDELETE(remove) task dependencies.src/components/kanban/DependencyModal.tsx: Visual modal allowing users to manage task blocking relationships.src/components/kanban/KanbanTaskCard.tsx: Render red "Blocked By" and indigo "Blocking" badges showing dependency statistics.src/components/kanban/KanbanColumn.tsx: Calculate and propagate dependency blocker counts to individual cards.src/components/kanban/KanbanBoard.tsx: Integrated drag-and-drop move verification to block dropping tasks onto the final stage if they are blocked by unfinished tasks.How to Test
Checklist
console.log, debug code, or commented-out blocksnpm run lintpasses locally (Eslint setup failed locally on native dependency issue)npm run type-check)Accessibility (UI changes only)