External dashboards

Give an LLM the Barbershop dashboard skill to adapt the built-in experience or create a separate client.

To create a custom Barbershop dashboard, copy the skill and give it to your LLM. The skill will explain how features/dashboard supplies the Keystone administration shell while features/platform contains Barbershop's product-specific operator experience.

After that source orientation, it will ask what you dislike, what should stay, what workflows and users matter, and what the replacement should look and feel like. It then traces the exact routes, feature slices, GraphQL calls, schema, access rules, sessions, and provider boundaries in the supplied Barbershop codebase before proposing work.

Skill file: /skills/openfront-barbershop-custom-dashboard/SKILL.md

Platform pages

Routes are app/dashboard/(admin)/platform/<route>/page.tsx. Screens and server actions are in features/platform/<slice>. Every platform page is scoped to the active shop. If the user has no shop, the platform layout shows a shop access panel instead.

PageSliceWhat operators do there
/dashboard/platform/bookingbookingBooking board for one day: appointments by time, schedule by barber, chairs, status filter. Create staff appointments, confirm, check in, seat, cancel, reschedule, mark no-show
/dashboard/platform/queuequeueWalk-in line: add a walk-in, assign service and barber, mark texted, seat into an appointment, mark served or left; recently served
/dashboard/platform/barbershopbarbershopShop operations: a "Needs attention" list (low or expiring stock, unpaid or unapproved commissions, open card payments, missing no-show policy, chairs in maintenance or unassigned, unsigned waivers) and the waitlist
/dashboard/platform/servicesservicesService menu, packages and memberships, retail products, booking policy link
/dashboard/platform/services/categoriesservicesCreate, edit, order, and show or hide menu categories
/dashboard/platform/services/new, /services/[id]recordsCreate and edit a service: price in dollars, duration, deposit, barbers, licensed flag, status
/dashboard/platform/services/packages/new, /services/packages/[id]recordsCreate and edit a package and its included services
/dashboard/platform/services/plans/new, /services/plans/[id]recordsCreate and edit a membership plan
/dashboard/platform/services/new-product, /services/products/[id]recordsCreate and edit a retail product
/dashboard/platform/staffstaffWeekly roster, barbers, projected commission, shop closures, shifts and time off
/dashboard/platform/staff/newstaffAdd a barber
/dashboard/platform/staff/[id]staffBarber profile, services, chair, commission rate, weekly hours editor, shifts and time off, practitioner credentials (add, suspend, expire, revoke), sign-in account link, recent visits
/dashboard/platform/staff/chairsstaffCreate and edit chairs; set in service, maintenance, or reserved
/dashboard/platform/customerscustomersCustomer directory and profile: visit history, receipts, notes, consent and waivers, sell and manage memberships and packages, status
/dashboard/platform/customers/newrecordsAdd a customer
/dashboard/platform/posposOpen tickets and checkout (cash, card recorded by staff, package visit), tips, discount, tax; retail sales and returns; receipts and cash refunds
/dashboard/platform/inventoryinventoryRetail stock on hand, needs-reordering tab, search, margin
/dashboard/platform/inventory/[id]inventoryOne product: receive a delivery, record waste or a count correction, lots, stock ledger
/dashboard/platform/inventory/suppliersinventoryCreate and edit suppliers; use, pause, or archive
/dashboard/platform/payrollpayrollCommissions by status and barber, bulk approve or void, pay per barber, payouts, tips by barber
/dashboard/platform/paymentspaymentsPayment providers (set up manual, turn on or off, set up Stripe when STRIPE_SECRET_KEY is set), takings by tender over 30 days, recent receipts, open card payments, processor checks
/dashboard/platform/policiespoliciesBooking policy in force, publish a new version, version history, retire; no-show policies (create, edit, use, pause, archive)
/dashboard/platform/teamteamAdd an existing account by email, set the shop role, suspend, restore, or remove access
/dashboard/platform/reportsreportsRevenue, appointments, walk-ins, and barber and service performance for a date range
/dashboard/platform/store-settingsstore-settingsShop name, tagline, address, phone, timezone, hours, brand color, logo, publish the storefront; active shop selector

Onboarding is not a route. It is a dialog in the dashboard shell (features/platform/onboarding). See Getting started.

Lists without a platform page are edited on the generic /dashboard/<list-key> pages from app/dashboard/(admin)/[listKey]. Examples are waiver forms, waitlist entries (the "All requests" link), roles, and users. System ledgers such as GuestBookingCommand, PaymentWebhookEvent, and LifecycleOutboxEvent are read-only.

Data the pages use

The heavier pages read one projection query each: platformBooking, platformQueue, platformCustomers, platformPos, platformReports, platformServices, platformStaff, platformOperations, and platformTeam. Payments, payroll, inventory, and policies use generated list queries filtered by the active shop. Changes go through the named commands listed on the overview.

On this page