Repository: vercel/commerce Branch: main Commit: 1df2cf6f6c93 Files: 75 Total size: 114.8 KB Directory structure: gitextract_ucebgmi7/ ├── .env.example ├── .gitignore ├── .vscode/ │ ├── launch.json │ └── settings.json ├── README.md ├── app/ │ ├── [page]/ │ │ ├── layout.tsx │ │ ├── opengraph-image.tsx │ │ └── page.tsx │ ├── api/ │ │ └── revalidate/ │ │ └── route.ts │ ├── error.tsx │ ├── globals.css │ ├── layout.tsx │ ├── opengraph-image.tsx │ ├── page.tsx │ ├── product/ │ │ └── [handle]/ │ │ └── page.tsx │ ├── robots.ts │ ├── search/ │ │ ├── [collection]/ │ │ │ ├── opengraph-image.tsx │ │ │ └── page.tsx │ │ ├── children-wrapper.tsx │ │ ├── layout.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ └── sitemap.ts ├── components/ │ ├── carousel.tsx │ ├── cart/ │ │ ├── actions.ts │ │ ├── add-to-cart.tsx │ │ ├── cart-context.tsx │ │ ├── delete-item-button.tsx │ │ ├── edit-item-quantity-button.tsx │ │ ├── modal.tsx │ │ └── open-cart.tsx │ ├── grid/ │ │ ├── index.tsx │ │ ├── three-items.tsx │ │ └── tile.tsx │ ├── icons/ │ │ └── logo.tsx │ ├── label.tsx │ ├── layout/ │ │ ├── footer-menu.tsx │ │ ├── footer.tsx │ │ ├── navbar/ │ │ │ ├── index.tsx │ │ │ ├── mobile-menu.tsx │ │ │ └── search.tsx │ │ ├── product-grid-items.tsx │ │ └── search/ │ │ ├── collections.tsx │ │ └── filter/ │ │ ├── dropdown.tsx │ │ ├── index.tsx │ │ └── item.tsx │ ├── loading-dots.tsx │ ├── logo-square.tsx │ ├── opengraph-image.tsx │ ├── price.tsx │ ├── product/ │ │ ├── gallery.tsx │ │ ├── product-description.tsx │ │ └── variant-selector.tsx │ ├── prose.tsx │ └── welcome-toast.tsx ├── lib/ │ ├── constants.ts │ ├── shopify/ │ │ ├── fragments/ │ │ │ ├── cart.ts │ │ │ ├── image.ts │ │ │ ├── product.ts │ │ │ └── seo.ts │ │ ├── index.ts │ │ ├── mutations/ │ │ │ └── cart.ts │ │ ├── queries/ │ │ │ ├── cart.ts │ │ │ ├── collection.ts │ │ │ ├── menu.ts │ │ │ ├── page.ts │ │ │ └── product.ts │ │ └── types.ts │ ├── type-guards.ts │ └── utils.ts ├── license.md ├── next.config.ts ├── package.json ├── postcss.config.mjs └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .env.example ================================================ COMPANY_NAME="Vercel Inc." SITE_NAME="Next.js Commerce" SHOPIFY_REVALIDATION_SECRET="" SHOPIFY_STOREFRONT_ACCESS_TOKEN="" SHOPIFY_STORE_DOMAIN="[your-shopify-store-subdomain].myshopify.com" ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage .playwright # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* # local env files .env* !.env.example # vercel .vercel # typescript *.tsbuildinfo next-env.d.ts .env*.local ================================================ FILE: .vscode/launch.json ================================================ { "version": "0.2.0", "configurations": [ { "name": "Next.js: debug server-side", "type": "node-terminal", "request": "launch", "command": "pnpm dev" }, { "name": "Next.js: debug client-side", "type": "chrome", "request": "launch", "url": "http://localhost:3000" }, { "name": "Next.js: debug full stack", "type": "node-terminal", "request": "launch", "command": "pnpm dev", "serverReadyAction": { "pattern": "started server on .+, url: (https?://.+)", "uriFormat": "%s", "action": "debugWithChrome" } } ] } ================================================ FILE: .vscode/settings.json ================================================ { "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, "editor.codeActionsOnSave": { "source.fixAll": "explicit", "source.organizeImports": "explicit", "source.sortMembers": "explicit" } } ================================================ FILE: README.md ================================================ [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fcommerce&project-name=commerce&repo-name=commerce&demo-title=Next.js%20Commerce&demo-url=https%3A%2F%2Fdemo.vercel.store&demo-image=https%3A%2F%2Fbigcommerce-demo-asset-ksvtgfvnd.vercel.app%2Fbigcommerce.png&env=COMPANY_NAME,SHOPIFY_REVALIDATION_SECRET,SHOPIFY_STORE_DOMAIN,SHOPIFY_STOREFRONT_ACCESS_TOKEN,SITE_NAME) # Next.js Commerce A high-performance, server-rendered Next.js App Router ecommerce application. This template uses React Server Components, Server Actions, `Suspense`, `useOptimistic`, and more.

> Note: Looking for Next.js Commerce v1? View the [code](https://github.com/vercel/commerce/tree/v1), [demo](https://commerce-v1.vercel.store), and [release notes](https://github.com/vercel/commerce/releases/tag/v1). ## Providers Vercel will only be actively maintaining a Shopify version [as outlined in our vision and strategy for Next.js Commerce](https://github.com/vercel/commerce/pull/966). Vercel is happy to partner and work with any commerce provider to help them get a similar template up and running and listed below. Alternative providers should be able to fork this repository and swap out the `lib/shopify` file with their own implementation while leaving the rest of the template mostly unchanged. - Shopify (this repository) - [BigCommerce](https://github.com/bigcommerce/nextjs-commerce) ([Demo](https://next-commerce-v2.vercel.app/)) - [Ecwid by Lightspeed](https://github.com/Ecwid/ecwid-nextjs-commerce/) ([Demo](https://ecwid-nextjs-commerce.vercel.app/)) - [Geins](https://github.com/geins-io/vercel-nextjs-commerce) ([Demo](https://geins-nextjs-commerce-starter.vercel.app/)) - [Medusa](https://github.com/medusajs/vercel-commerce) ([Demo](https://medusa-nextjs-commerce.vercel.app/)) - [Prodigy Commerce](https://github.com/prodigycommerce/nextjs-commerce) ([Demo](https://prodigy-nextjs-commerce.vercel.app/)) - [Saleor](https://github.com/saleor/nextjs-commerce) ([Demo](https://saleor-commerce.vercel.app/)) - [Shopware](https://github.com/shopwareLabs/vercel-commerce) ([Demo](https://shopware-vercel-commerce-react.vercel.app/)) - [Swell](https://github.com/swellstores/verswell-commerce) ([Demo](https://verswell-commerce.vercel.app/)) - [Umbraco](https://github.com/umbraco/Umbraco.VercelCommerce.Demo) ([Demo](https://vercel-commerce-demo.umbraco.com/)) - [Wix](https://github.com/wix/headless-templates/tree/main/nextjs/commerce) ([Demo](https://wix-nextjs-commerce.vercel.app/)) - [Fourthwall](https://github.com/FourthwallHQ/vercel-commerce) ([Demo](https://vercel-storefront.fourthwall.app/)) > Note: Providers, if you are looking to use similar products for your demo, you can [download these assets](https://drive.google.com/file/d/1q_bKerjrwZgHwCw0ovfUMW6He9VtepO_/view?usp=sharing). ## Integrations Integrations enable upgraded or additional functionality for Next.js Commerce - [Orama](https://github.com/oramasearch/nextjs-commerce) ([Demo](https://vercel-commerce.oramasearch.com/)) - Upgrades search to include typeahead with dynamic re-rendering, vector-based similarity search, and JS-based configuration. - Search runs entirely in the browser for smaller catalogs or on a CDN for larger. - [React Bricks](https://github.com/ReactBricks/nextjs-commerce-rb) ([Demo](https://nextjs-commerce.reactbricks.com/)) - Edit pages, product details, and footer content visually using [React Bricks](https://www.reactbricks.com) visual headless CMS. ## Running locally You will need to use the environment variables [defined in `.env.example`](.env.example) to run Next.js Commerce. It's recommended you use [Vercel Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables) for this, but a `.env` file is all that is necessary. > Note: You should not commit your `.env` file or it will expose secrets that will allow others to control your Shopify store. 1. Install Vercel CLI: `npm i -g vercel` 2. Link local instance with Vercel and GitHub accounts (creates `.vercel` directory): `vercel link` 3. Download your environment variables: `vercel env pull` ```bash pnpm install pnpm dev ``` Your app should now be running on [localhost:3000](http://localhost:3000/).
Expand if you work at Vercel and want to run locally and / or contribute 1. Run `vc link`. 1. Select the `Vercel Solutions` scope. 1. Connect to the existing `commerce-shopify` project. 1. Run `vc env pull` to get environment variables. 1. Run `pnpm dev` to ensure everything is working correctly.
## Vercel, Next.js Commerce, and Shopify Integration Guide You can use this comprehensive [integration guide](https://vercel.com/docs/integrations/ecommerce/shopify) with step-by-step instructions on how to configure Shopify as a headless CMS using Next.js Commerce as your headless Shopify storefront on Vercel. ================================================ FILE: app/[page]/layout.tsx ================================================ import Footer from "components/layout/footer"; export default function Layout({ children }: { children: React.ReactNode }) { return ( <>
{children}