Admin portal overview
Everything under /admin in the web app. Pages live in
apps/web/src/app/(main)/admin/; the sidebar is defined in
AdminLayoutClient.tsx, and access to each page is decided by PAGE_ACCESS in
packages/core/src/lib/rbac.ts.
The eight nav groups
Section titled “The eight nav groups”| Group | What it covers |
|---|---|
| Overview | Dashboard, Analytics |
| Events | Events, Auctions, Artwork, Bundles, Artists, Signing Config, Sponsors, Stamp Rally, Vendor Directory |
| Bookings | Signing Bookings, Entry Bookings, Grading Bookings, Revenue (Artist Signing, Bookings, WhatsApp Sales) |
| Finance | Finance dashboard, Payment Requisitions, Supplier Bills, Expense Claims, Suppliers / Payees |
| Event Day | Signing scanners (Entry, Exit, Slip, Payment Checker, Prize), Signing Queue, Scan Monitor, Entry Tickets (Walk-In Booking, Entrance Gate, Ticket Check-In) |
| Engagement | CRM, Inbox, WhatsApp, Vendor Contacts, CDP, Vendors, Collaborate, Vouchers, Lucky Draws, Merch Sales |
| Content | News, Newsletter, Testimonials, Legal Pages, Mobile App (Reports, Posts, Comments, Ads, Badges, Promo Cards, Wallpapers, Card Shops, App Config) |
| System | Users, Settings, Email Previews, Audit Trail |
Two rules for every admin change
Section titled “Two rules for every admin change”- Register the page in
PAGE_ACCESS. A 403 on a page you just added is almost always this. See Roles and access. - Audit-log every create, update and delete with
logAudit(ctx, {...}). It is a compliance requirement andbun run check:audit-coverageenforces it in CI.
Adding a page
Section titled “Adding a page”The admin-crud skill scaffolds the router, page and data table in the house style. The manual version is in Your first task.
