MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-415

6.12.7 The public roadmap view — status tracking (submitted → planned → in_progress → done)

Done
Description

Estimate: 55m · Depends on: 6.12.4

Build the public ROADMAP per the 6.12.1 design, over the 6.12.4 public projection. The status-grouped, vote-counted public view of a project’s public-facing items — the Canny / Productboard / Featurebase public-roadmap shape.

  • Status grouping: columns by a public-facing status mapping — submitted → planned → in progress → done — derived from the project’s workflow statuses (decide the mapping from the real status set to these four public buckets; a status not meant to be public — e.g. canceled / triage — is NOT shown). Each card shows the request title + kind + vote count + a link to the public request detail (6.12.6 upvote/comment).
  • The read goes through the public projection (6.12.4) so no internal field leaks; it is paginated / lazy per column (the at-scale rule — a busy public roadmap is unbounded). As the project admin advances an item’s status (via the normal internal flow), the public roadmap reflects the new bucket.
  • The view UI uses ONLY shipped components/ui/* + --el-* / [data-display-style] tokens, renders the empty-roadmap + loading + error states, and uses the palette for the per-status tones (not grey-only).

Stay 4-layer: the route parses + calls one service method returning the public roadmap projection (grouped + counted); no raw Prisma in the route.

Acceptance criteria

  • The public roadmap renders status-grouped columns (submitted → planned → in progress → done) of public-facing items, each with its vote count + a link to the request, per the 6.12.1 design; non-public statuses (canceled / triage) are not shown.
  • The read uses the 6.12.4 public projection (no internal field leaks) and is paginated / lazy; advancing an item’s status moves it to the right bucket.
  • Only --el-* + [data-display-style] tokens + shipped components/ui/*; empty / loading / error states render; per-status tones use the palette (AA-safe).
  • 4-layer respected (the roadmap projection in the service/repository, no raw Prisma in the route).

Context refs