Skip to content

Phase 3: Application Plane + Task CRUD #8

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions