Build modern, SEO ready commerce storefronts with Hygraph, Next.js, Stripe and Tailwind CSS
This project is an example of how to build fully-functioning Next.js commerce storefront with Hygraph and Stripe. View the demo on https://commerce.withheadlesscms.com/.
- Fully localized product catalogue built with Hygraph localization and Next.js.
- Pre-rendered catalogue pages via
getStaticProps
andgetStaticPaths
. - Dynamic client-side data fetching via SWR.
- Localized shopping cart with
react-use-cart
. - Hosted checkout and payment flow with Stripe Checkout.
- Use the Hygraph mutation API with API Routes to create orders on successful checkout (via webhook).
- Multiple currency support.
This reference application requires a Stripe account
- Clone the repository with
degit
and install project dependencies.
npx degit Hygraph/hygraph-commerce-starter#main hygraph-commerce-starter
cd hygraph-commerce-starter
npm install
-
Create a new Hygraph project using the
Commerce Starter
template. -
Add a
.env
file by cloning.env.sample
and providing the required variable values.
It is recommended you create separate Hygraph auth tokens to handle querying and mutating data.
HYGRAPH_MUTATION_TOKEN=
HYGRAPH_QUERY_TOKEN=
HYGRAPH_ENDPOINT=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SIGNING_SECRET=
-
Setup a Stripe webhook for the
checkout.session.completed
event to order to enable Hygraph fulfilment via the mutation API. -
Configure support for more locales or currencies in
hygraph.config.js
if required. Learn more here. -
Run
npm run dev
Project configuration for supported locales and currencies is managed in hygraph.config.js
.
It is important that the
locales
array reflects the enabled locales in your Hygraph project.
module.exports = {
locales: [
{
value: 'en',
label: 'English',
default: true
},
{
value: 'de',
label: 'German'
}
],
currencies: [
{
code: 'GBP',
default: true
},
{
code: 'EUR'
}
]
}