External storefronts

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

To create a custom Dealership storefront, copy the skill and give it to your LLM. The skill will explain how features/storefront and the customer-facing app routes implement Dealership's current 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 Dealership codebase before proposing work.

Skill file: /skills/openfront-dealership-custom-storefront/SKILL.md

Storefront routes

Routes live under app/(storefront)/. Screens are in features/storefront/screens. Server actions are in features/storefront/actions. GraphQL documents are in features/storefront/lib/data.

RouteCustomer journeyOperations
/Home: dealership profile and featured inventoryStorefrontProfile, GetVehicles, GetVehiclesCount, GetMakes
/inventoryBrowse listed vehicles with make, model, and condition filtersGetVehicles, GetVehiclesCount, GetInventoryOptions
/inventory/[id]Vehicle detail; ask a question, request a quote, or book a test driveGetVehicle, GetVehicleRecord, SubmitInquiry, SubmitTestDrive
/compareCompare up to 4 saved vehicles (IDs kept in browser storage)GetVehicle
/test-driveBook a test drive, optionally for a chosen vehicleSubmitTestDrive
/trade-inTrade-in request; shows the server's preliminary estimate rangeSubmitTradeIn
/financingPayment calculator and finance application with consent and privacy acknowledgmentSubmitFinancing
/serviceService menu and booking, optionally tied to a service packageGetServicePackages, SubmitServiceBooking
/contactGeneral inquirySubmitInquiry
/photo-creditsAttribution for listed vehicle photosGetVehicles
/account (signed out)Sign in or create an accountCustomerSignin, RegisterCustomer
/account/resetPassword resetShared Keystone password reset flow (needs SMTP)
/account (signed in)Request historyCustomerHistory, CustomerEmailLink
/account/requests/[ref]Request detail; cancel or reschedule an upcoming test drive or service bookingCustomerRequestDetail, CancelCustomerBooking, RescheduleCustomerBooking
/account/vehiclesPurchases (deals and delivery) and paymentsCustomerPurchases, CustomerPayments
/account/service, /account/service/[id]Service history and repair order detailCustomerServiceHistory, CustomerServiceOrder
/account/profileName, email, phone, passwordUpdateCustomer
/account/verifyConfirm the account email to link earlier requestsRequestCustomerEmailVerification, ConfirmCustomerEmail

app/sitemap.ts lists the main pages and every listed vehicle. app/robots.ts sets crawler rules.

Journey rules

  • The storefront serves one rooftop: the oldest active rooftop in an active dealer group. Submissions with a different rooftopSlug are rejected.
  • Public reads (publicInventoryVehicles and related) return only listed vehicles. Dealer cost and staff fields are never selected.
  • Every submission needs an idempotencyKey and has a website honeypot field. A retry with the same key returns the first result (reused).
  • Service bookings allow 4 per rooftop per hour. A vehicle can hold only one open test drive in a 60-minute window.
  • Signed-in submissions are tied to the account. Guest submissions become visible in the account only after email verification links the matching CRM Customer, and only for leads with that exact email.
  • The trade-in estimate is automated-preliminary. Financing uses the operator-recorded mode: the finance desk enters lender decisions.
  • Payment checkout (createPaymentCheckout) is created by staff for an approved deal or invoiced repair order; customers see their payments in /account/vehicles.
  • /account/profile updates name, email, phone, and password through updateUser.

On this page