Skip to content

Phase 3: Application Plane + Task CRUD #8

@bmfischer3

Description

@bmfischer3

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions