"Turn your home into the show." Holiday & event shows on every screen in the house β designer, player, venue ordering, and community, rebuilt from the legacy LinkAll8 ASP.NET app as a Next.js 15 + Convex brand app inside the LinkAll monorepo.
LiveBrand app of the LinkAll platform
| Repo | microspaces/linkall (LinkAll platform β brand apps live under apps/) |
|---|---|
| Local | C:/Users/AI/Repos/linkall |
| Owner agent | surroundshowdev |
| Backend | Convex deployment upbeat-capybara-284 β one shared schema, one deployment per brand, isolated data |
| Legacy | LinkAll8 multi-tenant ASP.NET (SiteId 1 = SurroundShow, SiteId 2 = FunFirst) |
| Sibling brand | FunFirst (apps/funfirst-web, port 3002) shares the same packages & CI; RedWave web moved to its own repo (microspaces/redwave) |
| Domain | Route | Wiring |
|---|---|---|
| surroundshow.com | / (brand shell) | Vercel project surroundshow-web |
| homeshow.com | /homeshow | host-matched rewrites in apps/surroundshow-web/vercel.json |
| weddingloco.com | /wedding-loco | |
| barloco.com | /bar-loco |
/venue settings plus places (booths/tables) with guest place claim./order binds the guest to a claimed place; /bar serves Bar Loco tickets.@linkall/brands is the single source of truth for identity, nav, theming, and feature flags; per-route layouts keep show pages chrome-free.pnpm install (repo root)
pnpm dev:surroundshow β turbo dev --filter=surroundshow-web
β
βΌ
Next.js 15 on :3001 (thin app β pages wire @linkall/ui components)
β
βΌ
Convex cloud NEXT_PUBLIC_CONVEX_URL (per-brand deployment)
SiteId column + domainβsite middleware β each brand is its own Convex deployment; no tenant filtering anywhere.DisplayHub scene sync β Convex reactive queries (shows.setScene updates every subscribed player/screen instantly).posts table with replies + upvotes, live-updating.designer.json/player.json) β typed shows/scenes schema + real React components.@theme tokens.Push to main. Two GitHub Actions workflows:
surroundshow-web, funfirst-web): uploads the full monorepo so workspace:* resolves, PATCHes the Vercel project rootDirectory to apps/<app>, then vercel deploy --prod. Not Vercel git integration.npx convex deploy in packages/backend with CONVEX_DEPLOY_KEY_<BRAND>, on packages/backend/convex/** changes.surroundshow-web Vercel project β the host-matched rewrites live in that app's vercel.json.| Monorepo | pnpm 9.15.0 workspaces + Turbo 2.x. Root package name linkall-platform. |
|---|---|
| App | apps/surroundshow-web β Next.js 15, React 19, Tailwind 4, port 3001 |
| Backend | packages/backend (@linkall/backend) β ONE Convex schema + functions; per-brand deployments. Venue service: venue.ts + venueLogic.ts + 13 indexes |
| Shared | packages/ui (@linkall/ui) β feed, groups, shows, designer/player, venue settings, guest night, app shell Β· packages/brands (@linkall/brands) β brand registry |
| Mobile | apps/mobile β Expo (expo-router), brand chosen by EXPO_PUBLIC_BRAND |
| Vercel | framework: nextjs, installCommand: cd ../.. && pnpm install --frozen-lockfile, buildCommand: cd ../.. && pnpm --filter surroundshow-web build, host-matched rewrites for show domains |
| CI | .github/workflows/vercel-deploy.yml + convex-deploy.yml, both matrix per brand |
| Local | pnpm install Β· pnpm dev:surroundshow Β· pnpm typecheck β Git Bash on Windows |
apps/surroundshow-web/
app/ # /, shows, designer, player, preview, venue, order, bar,
# groups, feed, people, market, events, [slug]/[act]/...
vercel.json # host-matched rewrites (show domains)
.env.local # NEXT_PUBLIC_CONVEX_URL
packages/
backend/convex/ # venue.ts, venueLogic.ts, designer.ts, locos.ts, seed.ts, β¦
brands/src/ # surroundshow | funfirst | redwave registry
ui/src/ # shared feature components
Live roadmap, managed as GitHub issues (linkall issues). Add or close items on GitHub β β = done, close as βnot plannedβ to remove.
2026-08-28 β venue module + mobile order verification (local)
pnpm dev:surroundshow β ready in ~2s against the production Convex deployment (upbeat-capybara-284)./, /venue, /order, /bar (Next 15.5, 1000+ modules compiled).venue.ts + 13 indexes) deployed to both brand deployments 2026-08-28, Main Room venues seeded (surroundshow venue id r571g4ymwdqrβ¦).Multi-screen player sync across physical devices not yet exercised β treat the 08-28 pass as feature + render verification, not a full QA pass.