Skip to content

Example Gatsby, BigCommerce and Netlify CMS project meant to jump start JAMStack ecommerce sites.

License

Notifications You must be signed in to change notification settings

bigcommerce/gatsby-bigcommerce-netlify-cms-starter

Repository files navigation

Gatsby + BigCommerce + Netlify CMS Starter

Note: This starter uses Gatsby v2.

Demo store

Accompanying tutorial blog post: Building a JAMstack Ecommerce Storefront with BigCommerce & Netlify

Accompanying overview video: Building e-commerce storefronts on the JAMstack

This version of the starter is meant to power a simple, single language storefront. If you are looking for something more complex, there is also a branch that supports multiple regions within a single storefront here.

Prerequisites

Setting up BigCommerce

The BigCommerce source plugin relies on API Keys. In this starter we are using the node project dotenv to access these variables. Make a copy of the SAMPLE.env file and fill in the variables from your BigCommerce API user details.

Note: You can sign up for a free trial on bigcommerce.com, which includes API access, if you don't already have an account. There is also a partner program which includes a sandbox account to play around in.

Once you have your API keys, do the following:

  • Install dependencies
    • yarn
  • Set up environment variables
    • cp SAMPLE.env .env
    • Enter your API credentials in .env file

Getting Started (Recommended - Netlify CLI)

Netlify CMS can run in any frontend web environment, but the quickest way to try it out is by running it on a pre-configured starter site with Netlify. Because the app requires credentials for the BigCommerce API, the easiest way to get started with a working deploy is via the Netlify CLI. To do so, run the following commands:

  • Link to your Netlify site
    • netlify link
  • Build
    • npm run build
  • Deploy to Netlify
    • netlify deploy

"One Click" Deploy

Alternative to the CLI, you can use the deploy button below to build and deploy your own copy of the repository. This is recommended if you have not already forked the repo (as it will make a copy of it).

Note: The initial deploy will fail, as you need to set build environment variables for your Netlify site

To set the variables:

  • Navigate to your Netlify site's "Build & Deploy" settings
  • Go to "Environment variables" > "Edit variables"
  • Enter the environment variables specified in "SAMPLE.env" and your BC API credentials

Deploy to Netlify

After clicking that button, you’ll authenticate with GitHub and choose a repository name. Netlify will then automatically create a repository in your GitHub account with a copy of the files from the template. Next, it will build and deploy the new site on Netlify, bringing you to the site dashboard when the build is complete. Next, you’ll need to set up Netlify’s Identity service to authorize users to log in to the CMS.

Access Locally

$ git clone https://github.com/[GITHUB_USERNAME]/[REPO_NAME].git
$ cd [REPO_NAME]
$ yarn
$ npm run start

To test the CMS locally, you'll need run a production build of the site:

$ npm run build
$ npm run serve

Media Libraries (installed, but optional)

Media Libraries have been included in this starter as a default. If you are not planning to use Uploadcare or Cloudinary in your project, you can remove them from module import and registration in src/cms/cms.js. Here is an example of the lines to comment or remove them your project.

import CMS from 'netlify-cms-app';
// import uploadcare from 'netlify-cms-media-library-uploadcare'
// import cloudinary from 'netlify-cms-media-library-cloudinary'

import AboutPagePreview from './preview-templates/AboutPagePreview';
import BlogPostPreview from './preview-templates/BlogPostPreview';
import ProductPagePreview from './preview-templates/ProductPagePreview';
import IndexPagePreview from './preview-templates/IndexPagePreview';

// CMS.registerMediaLibrary(uploadcare);
// CMS.registerMediaLibrary(cloudinary);

CMS.registerPreviewTemplate('index', IndexPagePreview);
CMS.registerPreviewTemplate('about', AboutPagePreview);
CMS.registerPreviewTemplate('products', ProductPagePreview);
CMS.registerPreviewTemplate('blog', BlogPostPreview);

Getting Started (Without Netlify)

$ gatsby new [SITE_DIRECTORY_NAME] https://github.com/netlify-templates/gatsby-starter-netlify-cms/
$ cd [SITE_DIRECTORY_NAME]
$ npm run build
$ npm run serve

Setting up the CMS

Follow the Netlify CMS Quick Start Guide to set up authentication, and hosting.

Debugging

Windows users might encounter node-gyp errors when trying to npm install. To resolve, make sure that you have both Python 2.7 and the Visual C++ build environment installed.

npm config set python python2.7
npm install --global --production windows-build-tools

Full details here

Purgecss

This plugin uses gatsby-plugin-purgecss and bulma. The bulma builds are usually ~170K but reduced 90% by purgecss.

Kudos

This is based on the Gatsby Netlify CMS Starter repo. Major kudos!

Photos in starter from various photographers: Aden Ardenrich Pixabay Artem Beliaikin Daria Shevtsova Aleksandar Pasaric Naim Benjelloun Kiara Coll Artem Beliaikin Eric Montanah Sanketh Rao Artem Beliaikin Jamie Diaz

CONTRIBUTING

Contributions are always welcome, no matter how large or small.

About

Example Gatsby, BigCommerce and Netlify CMS project meant to jump start JAMStack ecommerce sites.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published