Files
agent/docs/superpowers/specs/2026-07-19-backend-workbench-alignment-design.md

1.9 KiB

Backend Workbench Alignment Design

Goal

Align the Go backend with the latest Svelte workbench prototype. The frontend currently models a Discord-like project workbench with dynamic projects, project-scoped channels, and channel-specific first-screen data.

API Contract

Add GET /api/projects/:id/workspace.

The response intentionally matches apps/web/src/features/workbench/types.ts and uses camelCase field names:

  • project
  • channels
  • tags
  • recentSessions
  • inbox
  • tasks
  • aiSessions
  • notesSources
  • cronPlans

Project

The project payload contains:

  • id
  • name
  • description
  • initials
  • unreadCount

unreadCount is the count of open inbox items in the requested project.

Channels

System channels are derived by the backend for every project:

  • overview
  • inbox
  • tasks
  • ai_sessions
  • notes_sources
  • cron

Custom channels are stored in the database as project-scoped URL shortcuts:

  • title
  • icon
  • url
  • sortOrder

System channel counts are derived from project data. Custom channels do not have counts.

Channel Data

The workspace response includes first-screen channel data:

  • Inbox items map to mail-like message rows.
  • Tasks map to todo-style cards with a completed boolean.
  • AI sessions map to session list rows.
  • Notes and sources are merged into one attachment/file-management list.
  • Cron plans are metadata-only scheduled plans.

Cron plans do not execute autonomous agent work in this MVP.

Access Control

The endpoint only returns a workspace when the authenticated user owns the project. This follows the existing protected router and project dashboard behavior.

Tests

Backend tests should verify:

  • The workspace rejects projects owned by another user.
  • The workspace returns camelCase fields aligned with the frontend type.
  • System channel counts are scoped to the requested project.
  • Custom channels and Cron plans are project-scoped.