Skip to content

feat: implement task dependencies with blocking/blocked-by relationships (#3185)#3209

Closed
knoxiboy wants to merge 3 commits into
Priyanshu-byte-coder:mainfrom
knoxiboy:3185-issue-task-dependencies
Closed

feat: implement task dependencies with blocking/blocked-by relationships (#3185)#3209
knoxiboy wants to merge 3 commits into
Priyanshu-byte-coder:mainfrom
knoxiboy:3185-issue-task-dependencies

Conversation

@knoxiboy

Copy link
Copy Markdown
Contributor

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

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (fix or feature that changes existing behavior)
  • 📝 Documentation update
  • ♻️ Refactor / code cleanup (no functional change)
  • ⚡ Performance improvement
  • 🔒 Security fix
  • 🧪 Tests only

What Changed

  • Database / Schema:
    • supabase/migrations/20260715000002_add_task_dependencies.sql: Created task_dependencies join table with RLS policies, indexing, self-dependency prevention check, and a unique pair constraint.
  • Backend / API:
    • src/app/api/kanban/[projectId]/route.ts: Updated GET query to fetch all task dependency mappings.
    • src/app/api/kanban/[projectId]/tasks/[taskId]/dependencies/route.ts: Created endpoints to POST (create) and DELETE (remove) task dependencies.
  • Frontend / UI Components:
    • 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

  1. Navigate to a Kanban board page.
  2. Create two tasks: "Write Documentation" and "Deploy Production".
  3. Click the dependency link button (or click a badge) on "Deploy Production".
  4. Set "Deploy Production" to be blocked by "Write Documentation" and save.
  5. Attempt to drag "Deploy Production" to the final "Done" column. Verify that an alert listing the blocker appears and the card snaps back.
  6. Move "Write Documentation" to "Done".
  7. Drag "Deploy Production" to "Done". Verify that it is now allowed.

Checklist

  • Linked the related issue above
  • Self-reviewed my own diff
  • No unnecessary console.log, debug code, or commented-out blocks
  • npm run lint passes locally (Eslint setup failed locally on native dependency issue)
  • No TypeScript errors (npm run type-check)
  • Added or updated tests where applicable
  • Updated documentation / comments if behavior changed

Accessibility (UI changes only)

  • Keyboard navigation works correctly
  • Color contrast meets WCAG AA standard
  • ARIA labels / roles added where needed
  • Tested on mobile / responsive layout

Copilot AI review requested due to automatic review settings July 15, 2026 15:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:devops GSSoC type bonus: devops (+15 pts) type:feature GSSoC type bonus: new feature labels Jul 15, 2026
@github-actions

Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

@github-actions github-actions Bot added type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:performance GSSoC type bonus: performance (+15 pts) labels Jul 15, 2026
@Priyanshu-byte-coder

Copy link
Copy Markdown
Owner

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 (/dashboard/kanban, new DB tables, new nav). That's a different product direction than the maintainer wants to take DevTrack. Closing this and the related task-management PRs. If you'd like to contribute, features that deepen the analytics side (new GitHub metrics, better visualizations, insight cards) are very welcome. (CI was also red here — Type check fails — but the scope is the main reason.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:devops GSSoC type bonus: devops (+15 pts) type:feature GSSoC type bonus: new feature type:performance GSSoC type bonus: performance (+15 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Implement Task Dependencies with Blocking/Blocked-By Relationships

3 participants