← The archive
08 / GE· Building·Building
Guest Entertainer HQ
Multi-tenant SaaS for entertainment companies to manage performers, shows, bookings, clients, equipment, finances and communications.
Overview
Multi-tenant SaaS for entertainment companies to manage performers, shows, bookings, clients, equipment, finances and communications.
Build log
74 entries
Platform admins carry no company context at all — Model A, settled
Task-oriented sidebar shelves, arranged per account type
An app-origin image proxy for avatars and company logos
An intermittent test:run exit-1 was blocking git push
A dead PGRST200 embed on performers and timeline, replaced with a two-step user merge
Availability papercuts — same-day all-day entries, and toggle-off blanking the form
The invite display route now uses the shared roleLabel() instead of its own copy
A platform-managed currency catalogue, then company-assignable currency on top of it
Phase Z — cross-app QA and conformance completion closes the sweep
House-style sweep across seven clusters — shell, bookings, entities, people, comms, reviews and settings
Never wrap an OKLCH token in hsl() — it silently renders black
The Finances charts were emitting invalid CSS colours — nothing rendered
The house-style elevation kit — one shared surface language for the whole app
House-style evolution begins — Direction A foundation
Activity Log migrated — the last module, and the re-foundation is complete
Global Search migrated with role-aware result links (platform-admin 3 of 4)
Users management migrated (platform-admin 2 of 4)
Companies migrated (platform-admin 1 of 4), and a companies-DELETE trigger bug closed
Settings migrated — and a log_activity() companies-UPDATE bug fixed on the way through
Reviews migrated onto the foundation, with moderation preserved
Document metadata is editable — update method plus an edit page
Documents migrated behind an auth-gated storage proxy — Wasabi URLs never leave the server
Rich-text messages via tiptap — Communications Unit 2
Communications migrated — SSR threads, realtime-as-signal, and an atomic create_conversation RPC
Client roles were seeing participant emails — the display view now gates on staff role, not company
Calendar and Availability migrated — UTC-deterministic month bounds and an SSR-anchored 'now'
App-wide SSR hydration mismatches eliminated, and the dead initialLoad latch dropped
Auth errors surface inline instead of vanishing into a toast — and the toast stylesheet was never imported
Link-first invites for team and clients, on an accept_invite RPC with a ROW_COUNT guard
Team migrated onto the foundation, with every RBAC guard preserved
Bookings stress-tests the foundation — booking_detail_view collapses a three-read cascade into one
Bookings were sending an empty booking_number, so the generator trigger never fired
Clients migrated onto the foundation — the golden path every other module now follows
The sidebar defaults to expanded, and remembers whether you collapsed it
A two-tier ConfirmDialog — simple and type-to-confirm — plus Callout and CountChip
The shared UI kit — EntityForm, EntityListPage, field blocks and a SOP-backed StatusBadge registry
The data layer lands — useEntityCollection, useEntityDetail and useEntityList, all SSR-seeded
SSR auth foundation — a server-side context resolver, universal hydration, and no more localStorage cache
Platform admins can view as a company — server-validated, with a safe fallback
An authenticated e2e harness on @nuxt/test-utils, with a real signed-in session helper
The frontend re-foundation master plan — SSR rule supersession, view-as security, scope boundaries
Database mechanicals tightened: schema policies rescoped to authenticated, UUID defaults moved to gen_random_uuid()
Reconciled the May database-audit migrations into version control
Self-hosted Mona Sans, dropping the Google Fonts dependency
Fixed reactivity and hydration mismatches
First full database audit: 21 of 42 findings closed, every Critical and High resolved
A UI density polish pass
Global search
Users and roles
Platform admin
Settings and team management
Profiles
Activity log
Reviews
Messaging
Notifications
Documents and storage
Calendar and availability
Financial overview and client invoices
Optimistic auth hydration for snappier loads
Finances
Rate cards
Fixed an RLS helper recursion
Booking workflow
The booking system core
Fixed the home-route redirect
Locations and equipment
Shows and team management
Fixed auth profile hydration
Clients management lands
App layout and navigation
Authentication foundation
Brand primary colour and design foundation
What Guest Entertainer HQ is: one platform for entertainment companies to run performers, shows, bookings and finances