|

External dashboards

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

To create a custom Medspa 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 Medspa'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 Medspa codebase before proposing work.

Current platform pages

Route files under app/dashboard/(admin)/platform/** are thin wrappers around screens in features/platform/<slice>/screens. Paths below are relative to /dashboard.

PageSliceWhat operators do there
/platform/appointmentsappointmentsDay sheet, arrivals, and appointment status transitions
/platform/appointments/newappointmentsFront-desk booking with a client picker
/platform/appointments/[id]appointmentsAppointment detail, reservations, and status
/platform/appointments/[id]/treatmenttreatmentConsultation, contraindications, clinical order, consent, session, administration, notes, and follow-up
/platform/appointments/plans, /plans/[consultationId]appointmentsConsultation queue and treatment plans
/platform/checkout, /checkout/[id]checkoutTreatment tickets, retail add-ons, benefits, tip, and cash settlement
/platform/payments, /payments/[id]paymentsSettled payments, refunds, and tips
/platform/commissionscommissionsProvider commissions and payouts
/platform/clients, /clients/[id]clientsClient directory and record
/platform/engagementengagementWaitlist, message templates, and message log
/platform/follow-upsfollow-upsAftercare tasks and client responses
/platform/reviewsreviewsApprove or hide client reviews
/platform/catalog, /catalog/[id]catalogTreatments, categories, variants, prices, online booking, and required rooms
/platform/benefitsbenefitsMembership plans, client memberships, packages, and gift cards
/platform/inventory, /inventory/purchase-orders/[id]inventoryProducts, vendors, purchase orders, receiving, lots, and movements
/platform/administrationadministrationPractice hub with a needs-attention list
/platform/staff, /staff/[id]staffProviders, roles, invitations, credentials, and treatment authority
/platform/locationslocationsAddresses, timezones, and opening hours
/platform/schedulesschedulesWeekly hours, one-off hours, and time off
/platform/resourcesresourcesRooms, devices, and device readiness
/platform/storefrontstorefront-settingsPractice name, logo, publishing, and checkout tax rate
/platform/formsformsIntake forms, form templates, consent versions, and intake review
/platform/safety, /safety/incidents/[id], /safety/recalls/[id]safetyIncidents, recalls, and device readiness log
/platform/privacy, /privacy/requests/[id]privacyPatient rights requests, legal holds, retention, and break-glass access
/platform/reportsreportsRevenue by day, treatments, providers, and liabilities
/platform/integrationsintegrationsPayment methods, email status, event log, and webhooks

The dashboard also has /waitlist (the engagement workspace), an AI chat sidebar, and the generic Keystone list screens at /[listKey], /[listKey]/[id], and /[listKey]/create. Navigation is defined in features/platform/lib/navigation.ts. Each page checks the capability its workflow needs; because most lists are write-locked, a custom dashboard must call the same named mutations these screens call.

On this page