← Home

About this demo

Meridian Market is a simulated e-commerce storefront that proves the Voyage scheduling backend can be driven by a completely decoupled frontend — zero Voyage UI components.

🏗️

Architecture

Built with Next.js (static export) deployed to Cloudflare Pages. No @v0y4ge/studio-shell, @v0y4ge/coord-shell, @v0y4ge/jrni-ui, or any other Voyage UI package is imported. The storefront is a standalone app on a dedicated hostname.

🔌

Integration surface

Every scheduling interaction (book appointment, join queue, register for event) calls the published Voyage Customer API directly over fetch. The API key is held server-side; the client never sees it. This is the exact pattern documented in the voyage-integrate skill.

📅

Appointments

The /appointments page shows available services and time slots. Selecting a slot fires POST /v1/appointments with service_id, slot_id, and customer details. The API returns a confirmation reference.

🎉

Events

The /events page lists upcoming events with real capacity counters. Clicking Register fires POST /v1/events/:id/register. Capacity is enforced server-side by the Voyage events worker.

🔢

Queues

The /queue page shows live walk-in queues. Clicking Join Queue fires POST /v1/queues/join and returns a position number and estimated wait. Customers receive real-time status updates without refreshing.

🔐

Auth & API keys

API keys are issued per-integration via the Voyage Customer API key issuance flow (POST /v1/api-keys). The BFF (Next.js API routes) holds the key in an environment variable — it never appears in the client bundle. Customers authenticate via their own session (optional); guest flows are also supported.

Deployment
Hosted on shop.testville.v0y4ge.com (Cloudflare Pages project voyage-demo-storefront). Deployed via direct wrangler pages upload from the CI pipeline. Not a protected tenant — testville-class only.
Browse the catalog →