Skip to content

feat(kanban): drag-and-drop task reordering in board view#3234

Open
desireddymohithreddy0925 wants to merge 16 commits into
Priyanshu-byte-coder:mainfrom
desireddymohithreddy0925:feature/kanban-drag-drop
Open

feat(kanban): drag-and-drop task reordering in board view#3234
desireddymohithreddy0925 wants to merge 16 commits into
Priyanshu-byte-coder:mainfrom
desireddymohithreddy0925:feature/kanban-drag-drop

Conversation

@desireddymohithreddy0925

Copy link
Copy Markdown
Contributor

Summary

Implements a drag-and-drop Kanban board for tasks using @dnd-kit, allowing users to easily reorder tasks and move them across different status columns seamlessly.

Closes #2889

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 functionality)
  • 📝 Documentation update
  • 🎨 Code style update (formatting, renaming)
  • ♻️ Refactoring (no functional changes)
  • 🧪 Testing
  • 🏗️ Build / CI/CD / Infrastructure

Description

Tasks in the dashboard were previously only available in static lists under project milestones. This PR addresses the need for bulk triage and agile workflows by introducing a fully interactive Kanban board.

Changes made:

  • Database Schema Upgrades: Added an order_index integer column to the tasks table via migration to reliably persist user-defined task ordering within each status.
  • Kanban Board UI Widget: Created the KanbanBoard.tsx widget using @dnd-kit/core and @dnd-kit/sortable for accessible and robust drag-and-drop interactions. Features standard columns: To Do, In Progress, and Done.
  • Drag Mechanics:
    • Dragging a task within the same column correctly updates its local index.
    • Dragging a task across columns optimistically updates its status (and marks it completed if dropped in Done), transferring it to the new list automatically.
  • Bulk Update API: Added a new PUT /api/tasks/reorder endpoint optimized to handle bulk status and order_index updates generated when a drag-and-drop action completes.
  • Dashboard Integration: Configured KanbanBoard as an available widget in src/lib/dashboard-layout.ts so users can pin it to their dashboard views.

Testing

  • Verified moving tasks between "To Do", "In Progress", and "Done" updates the database accurately.
  • Verified tasks retain their new order_index upon page refresh.
  • Executed local static analysis (pnpm typecheck) seamlessly without type errors.

Screenshots / Screen Recording

(Attach a quick screen recording demonstrating dragging tasks between columns here)

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:feature GSSoC type bonus: new feature type:testing GSSoC type bonus: tests (+10 pts) type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:performance GSSoC type bonus: performance (+15 pts) and removed gssoc26 GSSoC 2026 contribution labels Jul 25, 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

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

Labels

type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:feature GSSoC type bonus: new feature type:performance GSSoC type bonus: performance (+15 pts) type:testing GSSoC type bonus: tests (+10 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(kanban): drag-and-drop task reordering in board view

1 participant