Under the hood
How this store is built, measured and tested. The numbers on this page come from this deploy’s own build, 3D pipeline and test runs.
Tests last run on commit 764bbbf, September 28, 2026.
The server sets every price
Checkout re-prices each line from the catalog and signs the payment intent. A total sent by the browser is ignored.
See the API3D sized for phones
On phones the chair is one 850 KB file with all 10 finishes inside it.
See the 3D pipelineTested before release
224 of 224 unit tests and 54 of 58 browser tests passed in the last run.
See the test resultsPayments without real charges
Payments are simulated with Stripe’s test-card behaviors, including a declined card and 3-D Secure, and go through the same event handler a real Stripe webhook uses.
See the event log
Live on this deploy
Checking the server…
Architecture
For your store: prices, payments and AI limits are enforced on the server; the shopper’s browser only holds their own cart and demo data.
Shopper’s browser
Static pages plus small interactive islands
Store pages
Next.js App Router. Prerendered for each version; personalized links render on demand.
3D configurator
model-viewer with one file per product. Every finish is a named material variant; AR on phones.
Demo sandbox
Cart, orders, events and admin edits in local storage, versioned and validated. Reset demo restores the seed.
Stylist panel
Sends the question with the current configuration. Apply changes the model.
Vercel (this deploy)
Node functions and static files
proxy.ts
Reads the version, ?for= and accent, sets a signed visitor id and noindex headers.
/api/price, /api/checkout
Re-price every line from the catalog and sign a payment intent that expires in 15 minutes.
/api/catalog/sign
Validates admin edits and signs them for this visitor only.
/api/stylist
Reserves quota before calling the model, one request per visitor at a time, and validates its proposal against the catalog.
/api/webhooks/stripe
Verifies Stripe signatures once a signing secret is set, and answers 404 until then. Simulated payments use the same handler.
Static 3D files
Content-hashed models and posters, cached for a year.
Services
Called only from the server
Vercel AI Gateway
The stylist’s model (configurable). Authenticated with OIDC, no keys in code.
Stripe, test mode
Checkout Sessions and webhooks once test keys are set. Until then, payments are simulated.
Vercel Runtime Cache
Daily AI counters, approximate. Upstash Redis gives exact counts when configured.
A test order, step by step
- The configurator shows prices with the same pricing code the server runs.
POST /api/pricere-prices the cart from the catalog. Admin edits count only when their signature matches this visitor.POST /api/checkoutsigns a payment intent that expires in 15 minutes.POST /api/checkout/confirmapplies the chosen Stripe test card: success, decline or 3-D Secure.- The payment event goes through the same handler a real Stripe webhook uses. The browser then records the order with exactly what was charged, plus the jobs a live store would run: the confirmation email (would be sent) and the production ticket.