FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Saleor Storefront built using React, Next.js with App Router, TypeScript, GraphQL, and Tailwind CSS.
翻訳待ち
Loading the full README.
Read the full README ↗[!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)
me on entry; client context is a cache of server truth (CheckoutDataProvider).?step=contact|shipping|payment updates shallowly (no full page refetch per click); browser Back walks the funnel./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. See checkout-guest-order.md.INTEGRATED_GATEWAYS) with Stripe + Dummy; add gateways via checkout-payment-gateways skill./api/auth/login; session resolved server-side (resolveSessionUser — guest / authenticated / unavailable).Developer docs: start at skills/saleor-paper-storefront/rules/paper-surfaces.md, then checkout-management.md. Forks on the old urql checkout: migrations/atomic/2026-06-checkout-v2/.
One codebase, many markets. Browse URLs are /{locale}/{channel}/… — e.g. /en/us/products/hoodie (English, US market, USD) and /pl/pl/products/bluza (Polish, Poland, PLN, with a translated catalog slug when set in Saleor) — with legacy /{channel}/… paths redirecting automatically. Each locale gets its own cached catalog payload, translated product copy from Saleor, per-channel pricing and currency, and hreflang/canonical metadata (including per-locale product/category handles).
messages/{locale}.json)en, pl, de, fr, fi, nb, ko (extend via LOCALE_DEFINITIONS in src/config/locale.ts)Storefront channels are explicit. Saleor may have many channels (B2B, wholesale, internal regions); Paper only exposes the slugs you configure via STOREFRONT_CHANNELS. Disallowed channel URLs return 404. For a single-channel store, set NEXT_PUBLIC_DEFAULT_CHANNEL only—the footer channel selector is hidden automatically.
Developer docs: docs/international-storefront.md · ADRs 0001 / 0002 / 0004 · skills ui-locale-routing / ui-i18n
The hard parts are solved. Adapt the look, keep the logic.
This is the beginning of the README. Read the rest at the original. Read the full README ↗