diff --git a/.env.example b/.env.example index 9ff0463db..ef0c3344a 100644 --- a/.env.example +++ b/.env.example @@ -5,3 +5,4 @@ SITE_NAME="Next.js Commerce" SHOPIFY_REVALIDATION_SECRET="" SHOPIFY_STOREFRONT_ACCESS_TOKEN="" SHOPIFY_STORE_DOMAIN="[your-shopify-store-subdomain].myshopify.com" +NEXT_PUBLIC_SHOPIFY_SHOP_ID="[your-shopify-shop-id]" diff --git a/.gitignore b/.gitignore index 0298027e4..5da11f77f 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts +.idea diff --git a/README.md b/README.md index 981685d2b..ad2884188 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,22 @@ A Next.js 14 and App Router-ready ecommerce template featuring: - Styling with Tailwind CSS - Checkout and payments with Shopify - Automatic light/dark mode based on system settings +- Shopify Analytics
-> 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). +> 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 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. +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/)) @@ -34,21 +40,41 @@ Vercel is happy to partner and work with any commerce provider to help them get - [Umbraco](https://github.com/umbraco/Umbraco.VercelCommerce.Demo) ([Demo](https://vercel-commerce-demo.umbraco.com/)) - [Wix](https://github.com/wix/nextjs-commerce) ([Demo](https://wix-nextjs-commerce.vercel.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). +> 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. + - 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. +## Shopify analytics + +1. Visit https://[your-store-id].myshopify.com/shop.json +2. Search for `shopId` and add it to the `NEXT_PUBLIC_SHOPIFY_SHOP_ID` in your `.env` file. + +To test out Shopify analytics, in your localhost, you can use the following steps: + +1. Install ngrok +2. Setup custom domain in ngrok dashboard +3. Expose your local development server (e.g., running on port 3000) with a command: + +```bash +ngrok http --domain=YOUR_NGROK_DOMAIN 3000 +``` + ## 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. +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. +> 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` @@ -69,8 +95,11 @@ Your app should now be running on [localhost:3000](http://localhost:3000/). 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](http://vercel.com/docs/integrations/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. +You can use this comprehensive [integration guide](http://vercel.com/docs/integrations/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. diff --git a/app/layout.tsx b/app/layout.tsx index 58f5a9708..d6dd4e23d 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,5 +1,6 @@ import Navbar from 'components/layout/navbar'; import { GeistSans } from 'geist/font'; +import ShopifyAnalytics from 'components/layout/shopify-analytics'; import { ensureStartsWith } from 'lib/utils'; import { ReactNode, Suspense } from 'react'; import './globals.css'; @@ -39,6 +40,7 @@ export default async function RootLayout({ children }: { children: ReactNode })