Admin / Curation Portal

Replaces wp-admin. One portal, all 4 sites, permissioned per site via admin_user_site_roles (owner / editor / curator / venue_partner).

Structure: separate app, shared monorepo

/apps
  /web     — the public Next.js multi-site frontend
  /admin   — this portal, its own Next.js app
/packages
  /api-client   — typed client for the /v1 API, used by both apps
  /schema-types — generated types from the Postgres schema

Kept as a separate app from the public site, not a /admin route inside it: different audience, different UX needs (dense tables, forms, bulk actions), different deploy cadence (you'll iterate on curator workflows far more often than on public page templates, and a bug in the admin app should never risk the public sites). Both are still cheap to host on Vercel — this isn't a meaningfully bigger infra footprint than one app.

Modules

Ingestion review queue (flagship screen)

This is the screen that directly replaces the current manual "hunt for events on partner pages" work, so it gets the most design attention:

Stack