A dazzlingly fast E-Commerce solution built with Typescript and NextJS
Next Storefront
A dazzlingly fast E-Commerce solution built with Typescript and NextJS.
🧐 About
Visit the demo here: https://next-storefront-statik.vercel.app/
📝 This demo will be updated regularly as cool new features are rolled out!
🏁 Getting Started
Installing
Firstly, install @next-storefront/core
. This package contains an adapter to pull in and transform data from different data sources. It also contains contexts and hooks.
npm install @next-storefront/core --save
Or
yarn add @next-storefront/core
🎈 Usage
Secondly, pick one or more data sources, and a checkout system.
Use with Shopify
When working with Shopify, Shopify acts as both the source of products and the checkout.
- Install
@next-storefront/shopify
- Configure Shopify as a source:
// next-storefront.config.js
module.exports = {
sources: [require('@next-storefront/shopify')],
}
- Configure Shopify Checkout:
// App layout
import { CartProvider } from '@next-storefront/core'
import * as shopifyCheckout from '@next-storefront/shopify/checkout'
export function Layout({ Component, pageProps }) {
return (
<CartProvider checkout={shopifyCheckout}>
...
</CartProvider>
)
}
Get a Shopify storefront api access token. The best way is to create a private app.
Set environment variables:
NEXT_PUBLIC_SHOPIFY_STOREFRONT_TOKEN=woohoobigtoken
NEXT_PUBLIC_SHOPIFY_STORE_NAME=statikly
(as in statikly.myshopify.com)
Use With Stripe
When working with Stripe, Stripe Checkout acts as the checkout. You can pull in product data from anywhere! (Even Shopify)
- Install any data source, e.g.
@next-storefront/json
- Configure your data source:
// next-storefront.config.js
module.exports = {
sources: [require('@next-storefront/json')],
}
- Install
@next-storefront/stripe
- Configure Stripe Checkout:
// App layout
import { CartProvider } from '@next-storefront/core'
import * as stripeCheckout from '@next-storefront/stripe/checkout'
export function Layout({ Component, pageProps }) {
return (
<CartProvider checkout={stripeCheckout}>
...
</CartProvider>
)
}
Set environment variables:
STRIPE_SECRET_KEY
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
Create some products by adding .json
files to the products
directory.
⛏️ Built Using
🎉 Acknowledgements
- Vue Storefront – Inspiration
- Gatsby Theme Shopify Manager – Inspiration
TODO Features (in no particular order):
- Static Generation
- Serverless deploy with Vercel or Netlify
- Work with SSG
- Work with Incremental Static (Re)generation
- Work with live-updates for things like inventory
- Use with Shopify
- Use with Stripe Checkout (This paves the way for retrieving products from anywhere!)
- Use with Stripe Products
- Use with other sources
- Wishlists
- Search & Filters
- Custom Checkout
- Order Pages
- PWA