A minimal, production-ready storefront template for Saleor.
Clean as a blank page — built to ship with agents and humans.
Tip
Questions or issues? Check our Discord for help.
Ship faster, customize everything. Paper is a new release—expect some rough edges—but every component is built with real-world e-commerce in mind. This is a foundation you can actually build on.
The checkout is where most storefronts fall apart or fall short. Paper's doesn't — and checkout v2 aligns it with the rest of the stack: App Router, Server Components, server actions, and the same BFF session as the storefront (no client-side urql or browser Saleor tokens).
Storefront cart Checkout surface
───────────── ────────────────
src/lib/checkout.ts src/app/(checkout)/checkout/
cookie + mutations → CheckoutSessionLoader (RSC)
@paper/session-bridge CheckoutApp → steps + payment
buildCheckoutPath() /order/{hmac} (guest confirmation)
- Server-first cart — RSC loads checkout +
meon entry; client context is a cache of server truth (CheckoutDataProvider). - URL-driven steps —
?step=contact|shipping|paymentupdates shallowly (no full page refetch per click); browser Back walks the funnel. - Dedicated confirmation —
/order/{hmac}after pay (URL frozen; status/tracking refresh from Saleor)./order/{saleorId}from email is redacted until we recognize you. Legacy/checkout/complete?order=redirects. Seecheckout-guest-order.md. - Extensible payments — Registry (
INTEGRATED_GATEWAYS) with Stripe + Dummy; add gateways viacheckout-payment-gatewaysskill. - Shared BFF auth — Sign-in via
/api/auth/login; session resolved server-side (resolveSessionUser— guest / authenticated / unavailable). - Multi-step, mobile-first — Focused forms, international address fields, composable step components.