Description Application Plane — Tenant Task CRUD
Status: ✅ Complete
Completed
Tenant layout with sidebar (Overview, Tasks, Members, Settings)
Tasks feature DB queries (list, get, create, update, delete, count by status)
Tasks feature API (create, update, delete with audit logging)
Task API route handlers with permission checks
Task components: TaskList, TaskForm, TaskStatusBadge, TaskPriorityBadge
Tenant pages: overview, task list, new task, task detail/edit
Members + settings placeholder pages
Tenant Routes (via subdomain)
/ → tenant overview
/tasks → task list with "New Task" button
/tasks/new → create task form
/tasks/:id → task detail + edit form
/members → placeholder (Phase 4)
/settings → placeholder (Phase 4)
API Routes
GET /api/tasks?status=&assignedTo= — list tasks (filtered)
POST /api/tasks — create task (requires task:create)
GET /api/tasks/:id — get task detail
PATCH /api/tasks/:id — update task (own: task:update_own, any: task:update_any)
DELETE /api/tasks/:id — delete task (own: task:delete_own, any: task:delete_any)
Permission Enforcement
Frozen tenants: mutations blocked (403)
Viewers: read-only
Members: CRUD own tasks
Managers: CRUD any task, assign tasks
Assignment requires task:assign permission
Key Files
src/app/tenant/layout.tsx — tenant sidebar layout
src/features/tasks/db/queries.ts — task DB queries
src/features/tasks/api/ — create, update, delete actions
src/features/tasks/components/ — task UI components
src/app/api/tasks/ — API route handlers
Reactions are currently unavailable
You can’t perform that action at this time.
Application Plane — Tenant Task CRUD
Status: ✅ Complete
Completed
Tenant Routes (via subdomain)
/→ tenant overview/tasks→ task list with "New Task" button/tasks/new→ create task form/tasks/:id→ task detail + edit form/members→ placeholder (Phase 4)/settings→ placeholder (Phase 4)API Routes
GET /api/tasks?status=&assignedTo=— list tasks (filtered)POST /api/tasks— create task (requirestask:create)GET /api/tasks/:id— get task detailPATCH /api/tasks/:id— update task (own:task:update_own, any:task:update_any)DELETE /api/tasks/:id— delete task (own:task:delete_own, any:task:delete_any)Permission Enforcement
task:assignpermissionKey Files
src/app/tenant/layout.tsx— tenant sidebar layoutsrc/features/tasks/db/queries.ts— task DB queriessrc/features/tasks/api/— create, update, delete actionssrc/features/tasks/components/— task UI componentssrc/app/api/tasks/— API route handlers