Skip to content

feat(marquee): Phase 0 — foundation (scaffold, backend switch, badge, memory round-trip) - #50

Merged
2bTwist merged 1 commit into
mainfrom
app/marquee-phase0
Jun 20, 2026
Merged

2bTwist merged 1 commit into
mainfrom
app/marquee-phase0

Conversation

@2bTwist

@2bTwist 2bTwist commented Jun 20, 2026

Copy link
Copy Markdown
Owner

First phase of Marquee, a movie-catalog app that dogfoods the @baas SDK on both backends. Plan: specs/plans/2026-06-20-marquee-dogfood.md.

Phase 0 (memory-backed foundation)

  • apps/marquee/ — Vite + React + TS, added to the pnpm workspace (apps/*).
  • Design system lifted from the live demo (cream theme, Space Grotesk display, JetBrains Mono body, exact tokens incl. --sb/--cx).
  • makeBackend(kind) factory — memory wired live; Supabase/Convex are structured stubs that throw "wired in Phase 1" (exhaustive switch).
  • <BackendBadge/> + backend switcher — Memory active; Supabase/Convex shown, disabled, "Available in Phase 1".
  • Catalog stub proves a full round-trip through the portable store port only (backend.store.insert → list, Result handled, never throws).

Built by a builder agent, verified independently by me

  • typecheck / build / biome clean (turbo now includes marquee, so CI builds the app too).
  • Playwright browser smoke: UI renders, the insert→list round-trip works on screen, a11y states correct (pressed/disabled/role=status), aesthetic matches the demo. Console clean (favicon added).

Dogfood signal (future SDK ergonomics PR): store.list<T>() returns items as T without surfacing the portable _id, so callers re-declare it — a WithId<T> helper would remove that.

Private app, not published; no changeset.

…memory round-trip

Marquee is a movie-catalog app that dogfoods the @baas SDK on both backends
(plan: specs/plans/2026-06-20-marquee-dogfood.md). Phase 0 stands up the
foundation, memory-backed:

- apps/marquee: Vite + React + TS, added to the pnpm workspace (apps/*).
- Design system lifted from the live demo (cream theme, Space Grotesk display,
  JetBrains Mono body, the exact color tokens incl. --sb/--cx).
- makeBackend(kind) factory: memory wired live; supabase/convex are structured
  stubs that throw "wired in Phase 1" (exhaustive switch).
- <BackendBadge/> + segmented backend switcher (Memory active; Supabase/Convex
  shown, disabled, "Available in Phase 1").
- Catalog stub proves a full round-trip through the PORTABLE store port only
  (backend.store.insert -> list, Result handled, never throws).

Built by a builder agent; reviewed + verified independently: typecheck/build/
biome clean, and a Playwright browser smoke confirmed the UI renders, the
insert->list round-trip works on screen, a11y states are correct, and the
aesthetic matches the demo. Favicon added (the only console 404).

Dogfood signal for a later SDK ergonomics PR: store.list<T>() returns items as T
without surfacing the portable _id, so callers re-declare _id; a WithId<T> helper
(or list widening the element type) would remove that.
@2bTwist
2bTwist merged commit b38b15e into main Jun 20, 2026
11 checks passed
@2bTwist
2bTwist deleted the app/marquee-phase0 branch June 20, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant