All Projects → saleor → saleor-storefront

saleor / saleor-storefront

Licence: BSD-3-Clause License
A GraphQL-powered, NextJs-based, PWA storefront for Saleor. IMPORTANT: This project is [DEPRACETED] in favor of saleor/react-storefront soon to become our default demo and storefront starter pack.

Programming Languages

typescript
32286 projects
SCSS
7915 projects
javascript
184084 projects - #8 most used programming language
Handlebars
879 projects
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to saleor-storefront

currency-converter
💰 Easily convert between 32 currencies
Stars: ✭ 16 (-97.91%)
Mutual labels:  pwa, nextjs
React Storefront
React Storefront - PWA for eCommerce. 100% offline, platform agnostic, headless, Magento 2 supported. Always Open Source, Apache-2.0 license. Join us as contributor ([email protected]).
Stars: ✭ 292 (-61.83%)
Mutual labels:  pwa, nextjs
next-pwa-template
Next.js progressive web app template
Stars: ✭ 266 (-65.23%)
Mutual labels:  pwa, nextjs
scriptified.dev
A weekly newsletter with insightful tips, tools, resources & more on React and JavaScript. Made with NextJS && TailwindCSS. Curated by @gupta-ji6 && @prateek3255.
Stars: ✭ 18 (-97.65%)
Mutual labels:  pwa, nextjs
Next Offline
make your Next.js application work offline using service workers via Google's workbox
Stars: ✭ 1,306 (+70.72%)
Mutual labels:  pwa, nextjs
RocketLaunches
Rocket launches, a simple site to let you know what is the next rocket launch.
Stars: ✭ 13 (-98.3%)
Mutual labels:  pwa, nextjs
React Storefront
Build and deploy e-commerce progressive web apps (PWAs) in record time.
Stars: ✭ 275 (-64.05%)
Mutual labels:  pwa, nextjs
web-starter-kit
An opinionated starter kit with styled-system, graphql-hooks, mobx and nextjs (PWA)
Stars: ✭ 17 (-97.78%)
Mutual labels:  pwa, nextjs
Pwa Boilerplate
✨ PWA Boilerplate is highly scalable and is designed to help you kick-start your next project 🔭.
Stars: ✭ 82 (-89.28%)
Mutual labels:  pwa, nextjs
Next Pwa
Zero config PWA plugin for Next.js, with workbox 🧰
Stars: ✭ 909 (+18.82%)
Mutual labels:  pwa, nextjs
Trends
ultra high performance github trending application
Stars: ✭ 450 (-41.18%)
Mutual labels:  pwa, nextjs
Nextjs Pwa Graphql Sql Boilerplate
Next.js serverless PWA with GraphQL (Apollo) + Postgres SQL boilerplate
Stars: ✭ 125 (-83.66%)
Mutual labels:  pwa, nextjs
Gank
🦅 Gank api base △ next.js (react&ssr)
Stars: ✭ 122 (-84.05%)
Mutual labels:  pwa, nextjs
Nextjs Pwa
Build a PWA with Next.JS
Stars: ✭ 132 (-82.75%)
Mutual labels:  pwa, nextjs
hackaru-web
An web server for Hackaru
Stars: ✭ 20 (-97.39%)
Mutual labels:  pwa
jolvera.dev
Personal blog built with Next.js & Rebass
Stars: ✭ 36 (-95.29%)
Mutual labels:  nextjs
jamstack-preview-and-deployments
Preview and deploy NextJS applications from the wordpress admin.
Stars: ✭ 17 (-97.78%)
Mutual labels:  nextjs
SikhJS
👳 🚀 Gurbani Progressive Web Application
Stars: ✭ 27 (-96.47%)
Mutual labels:  pwa
next-and-cypress-example
Next.js example instrumented for code coverage from Cypress tests
Stars: ✭ 111 (-85.49%)
Mutual labels:  nextjs
coding-ai
CodingAI is an open source application and it helps to find a mentor related your technologies stack.
Stars: ✭ 60 (-92.16%)
Mutual labels:  pwa

saleor-storefront repository is DEPRECATED

We've decided to build a new storefront starting from scratch, with no fancy design, focusing solely on best practices for building commerce storefronts. The new project, called react-storefront, uses Next.js as its foundation and Tailwind for the looks. You can find it here: https://github.com/saleor/react-storefront.

Saleor Storefront

1 copy 2x

Note: This project is a demonstration on how Saleor can be used. It’s not ready to be a starter but rather show how different cases can be handled and could be used as a recipe book. There will be breaking changes and the code is constantly evolving, so use at your own risk.

A GraphQL-powered, PWA, single-page application storefront for Saleor.

Features

Demo

See the public demo of Saleor Storefront!

Or launch the demo on a free Heroku instance.

Deploy

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Node.js 14.16
  • A running instance of Saleor.

To run the storefront, you have to set the NEXT_PUBLIC_API_URI environment variable to point to the Saleor GraphQL API. If you are running Saleor locally, with the default settings, NEXT_PUBLIC_API_URI is set to: http://localhost:8000/graphql/. To change it, either create a .env.local file and add it there or set an env variable using export command.

Installing

Clone the repository:

git clone https://github.com/mirumee/saleor-storefront.git

Enter the project directory:

cd saleor-storefront

Using stable release

To use the official stable release, checkout to a release tag:

$ git checkout 2.11.0

See the list of all releases here: https://github.com/mirumee/saleor-storefront/releases/

Using development version

If you want to use the latest development version, checkout to the master branch:

$ git checkout master

Install NPM dependencies:

npm i

Run the development server:

npm start

Go to http://localhost:3000 to access the storefront.

Build

To compile the app run:

$ npm run build

To compile the app and export storefront to the static HTML run:

$ npm run build:export

To compile the app and run it in production mode with next server run:

$ npm run build:start

In order to enable Apollo Devtools in the production version, set the environmental variable

NEXT_PUBLIC_ENABLE_APOLLO_DEVTOOLS=true

Cypress tests

If you want to run Cypress tests, make sure that all dependencies (including Cypress) are installed by running the install command.

npm i

Following environment variables are required to be set in order to be able to run tests properly:

  • API_URI - GraphQL API address.
  • STATIC_URL - static files destination url, eg. S3 bucket
  • CYPRESS_USER_NAME - username (email) for Storefront user.
  • CYPRESS_USER_PASSWORD - for the user mentioned above.

If you are running the Storefront from the perspective of Docker container, then you can run tests using following commands:

Headless mode:

cy:run

Cypress UI mode:

cy:open

If you want to run tests against your local development environment then use following commands:

Headless mode:

test:e2e:run

Cypress UI mode:

test:e2e:dev

Creating new components

All new components should follow Atomic Design Guidelines and be placed in src/@next/components directory.

Files structure can be generated using plop:

npm run generate

Modifying the Storefront

From Spectrum Post

Important Files

  • saleor-storefront/config/next/config.base.js - Base Next.js config file which contains webpack custom adjustments.
    • Can change name of the app (displayed when installed on mobile)
  • saleor-storefront/src/pages/app.tsx - Main entry point file. Render's the component, apollo-client, and others to the root div in index.html file above. Contains also head section - You can change the title of storefront here.
  • saleor-storefront/src/core/config.ts - Controls number of products shown per page, support email, gateway providers, social media, and some meta.
    • Can change support email
    • Can change products shown per page
    • Can change gateway providers
    • Can change social media links that are displayed in the footer
    • Can change some meta options
  • saleor-storefront/src/images/ - Holds all the images for logo, cart, favicon, etc.
    • Can change storefront logo, favicon, or add new images here.
  • saleor-storefront/src/globalStyles/scss/variables.scss - Contains base styles like colors, font size, container width, media breakpoints and more.
  • saleor-storefront/src/@next/globalStyles/ - Contains more base styles, themes, media, and constants.
  • saleor-storefront/src/views/ - This folder controls the views, or what is displayed for each page. Most views have a file named "Page.tsx" that controls the layout of the page and a file named "View.tsx" that calls the query and renders the component with the data.
    • Can add another view to storefront here. Requires adding a route (see routes below).
  • saleor-storefront/src/@next/pages/ - Second spot for modifying/adding different pages. This is the recommended directory to add new pages.
  • saleor-storefront/src/paths.ts - This folder contains all the paths. Here is where you add a new one.
  • saleor-storefront/src/pages/ - This folder contains files which are translated to Next.js routing. Here is where you add a new route.
    1. Export a new path in paths.ts
    2. Inside pages, create a new file with name correnspond to your desired route (read more here about nested routes). Import your view in the created route file end export it as a default export.
    3. To link to your new view import Link from "next/link" and use new path you created in paths.ts (make sure to import it)
  • saleor-storefront/src/app/App.tsx - This is main component that renders the , (explained below), and a couple other components.

Adding a Payment Gateway

  • saleor-storefront/src/core/config.ts - Add new gateway provider name here.
  • saleor-storefront/src/@next/components/organisms/ - Create a new folder for new payment gateway component here.
  • saleor-storefront/src/@next/components/organisms/PaymentGatewaysList/PaymentGatewaysList.tsx - Import new gateway component, create a new switch case to handle your gateway component.

Receiving confirmation emails

  • Set EMAIL_URL environment variable for Saleor core.
    • Using Docker - Add EMAIL_URL as new environment variable to both the api and worker service following the format here.
  • Issues getting emails working?
    • Gmail
      • Check to see that "Less secure app access" is turned ON. Under "Manage your Google Account" > Go to the security tab. By default, the setting is off for security reasons.
      • If using 2FA make sure to set an app password and use that in place of your normal login password.

Multichannel

  • Set [SALEOR_CHANNEL_SLUG] environment variable. - Default value: default-channel.

License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details

Crafted with ❤️ by Saleor Commerce

[email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].