Storefront P1: store profile + branding on vendor settings #402

Open
opened 2026-08-19 02:59:28 +00:00 by gambit-admin · 0 comments
Owner

Part of #401 (phase 1).

Give a vendor the public identity a storefront needs. Reuse vendor_settings
(JSONB) rather than adding a table or a CMS.

Fields: slug (unique, the only one that needs a real uniqueness guard),
display name, logo, banner, tagline, street address, phone, support email,
per-day store hours, social links, one accent colour.

  • Logos/banners go through the existing swappable media storage (local volume
    now, R2/S3 by config) — no new upload path.
  • Store hours: reuse the {date|weekday, open, close} shape already validated
    for event operating hours instead of inventing a second one.
  • Admin UI: one settings page. No theme builder, no page editor.

Done when a vendor can set slug + branding + hours, and a public endpoint
returns them for rendering.


Filed from a Claude Code session

Part of #401 (phase 1). Give a vendor the public identity a storefront needs. Reuse `vendor_settings` (JSONB) rather than adding a table or a CMS. Fields: `slug` (unique, the only one that needs a real uniqueness guard), display name, logo, banner, tagline, street address, phone, support email, per-day store hours, social links, one accent colour. - Logos/banners go through the existing swappable media storage (local volume now, R2/S3 by config) — no new upload path. - Store hours: reuse the `{date|weekday, open, close}` shape already validated for event operating hours instead of inventing a second one. - Admin UI: one settings page. No theme builder, no page editor. **Done when** a vendor can set slug + branding + hours, and a public endpoint returns them for rendering. --- Filed from a Claude Code session
gambit-admin added the featureapi labels 2026-08-19 02:59:28 +00:00
gambit-admin added the 13 · cross-cutting label 2026-09-04 13:36:40 +00:00
Sign in to join this conversation.