External dashboards

Give an LLM the dashboard skill to adapt Openfront's built-in operator experience or create a separate dashboard.

To create a custom dashboard, copy the skill and give it to your LLM. It will first ask which Openfront product and codebase you are using, whether you want to adapt the built-in dashboard or build a separate client, what you want to preserve, and what you want to change.

The skill tells the LLM to inspect that product's built-in dashboard, feature slices, GraphQL schema, operations, access rules, and authentication boundary before proposing work. Tell it what feels wrong in the existing dashboard, which operator workflows you need, who will use them, and any visual or interaction direction you already have.

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

Current platform pages

Source: github.com/openshiporg/openfront. Routes are app/dashboard/(admin)/platform/<route>/page.tsx; slices are features/platform/<slice>. features/dashboard supplies the generic Keystone admin shell.

PageWhat operators do there
/dashboard/platform/orders, /[id], /[id]/fulfill, /createOrder list and detail; rates, labels and fulfillments; returns, refunds and claims; admin order creation from a cart
/dashboard/platform/analyticsSales, customer, product and cart reports
/dashboard/platform/markets, /regions-managementRegion list (same screen)
/dashboard/platform/regionsRegions, Countries and Currencies tabs
/dashboard/platform/countries, /currenciesCountry and currency lists
/dashboard/platform/storeStore name, logo, color and homepage text
/dashboard/platform/products, /create, /[id]Products, variants, options, prices, images
/dashboard/platform/product-categories, /product-collectionsCatalog organization
/dashboard/platform/inventoryInventory list (currently queries a list that is not in the schema)
/dashboard/platform/usersCustomers and staff
/dashboard/platform/business-account-requestsReview business account requests
/dashboard/platform/invoicesBusiness accounts and their invoices
/dashboard/platform/discounts, /price-lists, /gift-cardsPromotions and pricing
/dashboard/platform/shipping-optionsShipping options per region
/dashboard/platform/shipping-providers, /shippingShipping provider records (same screen)
/dashboard/platform/payment-providersPayment provider records
/dashboard/platform/claimsClaim list and status
/dashboard/platform/appsOAuth apps
/dashboard/platform/api-keysAPI keys
/dashboard/platform/order-management-systemOAuth install consent for an external order system
/dashboard/platform/systemSettings, stores and payment-provider tabs

Other lists, such as Role, Team, TaxRate, WebhookEndpoint and Return, are edited on the generic /dashboard/<list-key> pages.

Operations a separate dashboard should call

Use these named mutations instead of writing status fields directly: createOrderFulfillment, cancelOrderFulfillment, transitionOrderStatus (only canceled or archived), getRatesForOrder, createProviderShippingLabel, cancelShippingLabel, trackShipment, validateShippingAddress, processReturnRefund, adjustInventory, createInvoiceFromLineItems, retryWebhookDeliveries, plus the queries getAnalytics and getFinanceClose. See GraphQL API.

On this page