• Stars
    star
    345
  • Rank 122,750 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created about 5 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Shopware PWA for eCommerce. Headless storefront solution for Shopware 6, which communicates through the SalesChannel-API. Always Open Source, MIT license. Made with 💙 by shopware AG & Vue Storefront.

Shopware PWA

⚠️ Shopware PWA is now under security maintenance mode only. That means there will be no new features and no usual bug fixes managed.

Read more:

what happens next?

... or visit directly documenation page to see what we offer as a next toolkit to work with:

Shopware Composable Frontends

🙌 As a Team, we'd like to thank you, the whole Community ❤️ for keeping this project so challenging and interesting! Hopefully the knowledge we all gathered will help us to create the next project even better! Join us and let's rock together with Shopware Composable Frontends!

📘 Documentation

👥 Community (#shopware-frontends & #shopware-pwa channel)


The only Official Modern Frontend with Progressive Web App features for Shopware 6.

NuxtJS Vue.js TypeScript

CircleCI Coverage Status Snyk badge

Stay connected

GitHub Repo stars Twitter Follow YouTube Channel Subscribers Discord

Supported versions of Shopware 6

Shopware PWA version Shopware 6 version
shopware-ver shopware-ver & shopware-ver
shopware-ver shopware-ver & shopware-ver

 

Documentation

See the official documentation to get started.

You can find there: fundamentials, concepts, migration guides, cookbook, troubleshooting and many many more.

 

About Shopware:

Shopware 6 is the next generation of open-source eCommerce software based on bleeding-edge technologies powered by Symfony and Vue.js. Focused on an API-first approach, Shopware provides more flexibility and less complexity.

PS: Check StorefrontUI - our UI library for eCommerce.

See it in action

B2C Theme demo Try out our open demo and if you like it first give us some star on Github ★ and then contact us on #shopware-pwa channel @ Vue Storefront Official Discord or via [email protected].

This demo site is connected to Shopware 6.

Video demo

See video demo!

Join the community on Discord

If you have any questions or ideas feel free to join our discord: https://discord.vuestorefront.io

Quickstart

Before you start testing it locally, try it out on CodeSandbox (including shopware-pwa CLI commands in embedded terminal)

Edit Shopware PWA v1.0.1 v1.0.1

Usage

Create a directory for your project and enter it

mkdir my-shopware-pwa
cd ./my-shopware-pwa

initialize project inside the directory

npx @shopware-pwa/cli init

It will ask for the address to your shopware instance, access token, and admin credentials to load plugins. Only the first two are required to start the instance, and default settings will point to our demo instance. Then you can just begin local development by typing:

yarn dev

Your application will be available on http://localhost:3000.
Now you have complete ShopwarePWA project running locally.

Running on custom Shopware instance

You can simply invoke once again shopware-pwa init and pass data to your custom instance.

Another way of doing this:

  1. edit file shopware-pwa.config.js inside the root of the newly created project
  2. fill it with your data, current example:
module.exports = {
  shopwareEndpoint: "https://shopware6-demo.vuestorefront.io",
  shopwareAccessToken: "SWSCVJJET0RQAXFNBMTDZTV1OQ",
};
  1. run again npx @shopware-pwa/cli init (to refresh plugins from instance) and then yarn dev

Read full instruction in CHEATSHEET.md file.

Running with plugins

If you already have some Shopware PWA plugins installed (like HelloCody plugin example), then you can generate plugin files

npx @shopware-pwa/cli init

or, for CLI installed globally

shopware-pwa init

Will ask you for username and password for shopware instance, to load installed plugins.

Development and contribution

When you create fork and clone repo, just type yarn start to install node dependencies and run the post-install script that builds and links packages, it also creates a test-project in root catalogue, which is ignored by git. Now, you're ready to develop. You can watch the compilation process by running yarn dev or yarn dev:<package-name>to specify the package that you will be working on. It also builds all necessary packages and

Please, remember to always during development have opened terminal with yarn test --watch command fired.

To see the project, go to ./test-project and run yarn dev. The project will be available in your browser at http://localhost:3000. You can test changes directly in ignored test-project directory or make changes inside packages (for example default-theme).

A more advanced development guide will be available soon.


Introduction to Shopware-PWA

What is Shopware-PWA?

It is a product, that will allow Shopware users to quickly set up a headless storefront for Shopware 6 eCommerce systems. It will provide all the PWA benefits like app-like experience, on-mobile-installation, service worker caching and more. Shopware-PWA by default will is equipped with a ready-to-go theme built on StorefrontUI.

It is a native integration dedicated for Shopware 6, which means all the Shopware developers will not have to learn new approaches and naming conventions. The goal of the product is to keep the entry threshold as low as possible to make further implementations fast and straightforward. The product will be compatible with the Shopware 6 Plugins Ecosystem.

Tech stack

What is Shopware-6-Client Library?

This is one of the critical components in Shopware-PWA architecture. It is a separate package built for TypeScript community to allow them to work with Shopware 6 API. It provides all the methods to work with SalesChannel-API of Shopware 6. Shopware-PWA uses that package for communication with Shopware backend.

What is StorefrontUI?

It is an excellent design system for the UI layer of your eCommerce systems. Storefront UI is an independent, Vue.js-based, the library of UI components for developers, designers, and agencies striving to build fabulous storefronts.

Read more: https://www.storefrontui.io/.

Caching approach

In Vue Storefront 1, we provided full offline support.

In Shopware-PWA we will go for a service worker caching. That means the product will use Shopware 6 logic through API instead of recreating all of the business logic in the frontend layer.

However, service workers will allow you to browse the catalogue offline.


Software engineering standards

Before starting the implementation of Shopware-PWA, we’ve made an in-depth analysis of all our previous experience, that we earned during the implement of Vue Storefront 1. After gathering all the lessons learnt, we decided to build a tech-driven high-quality product, that will meet the business needs.

Style Guide

We follow official VueJS coding standards - https://vuejs.org/v2/style-guide/.

We also setup Prettier (https://prettier.io/) on git pre-commit hook to automatically format all the code before pushing it to the remote repository. This way, we make sure that all the code’s been written using the same standards. It makes the process of learning the codebase of the product much easier and smoother for all the new developers.

Coding standards

DO

Designing
  • Always start working on a task by designing a view (define goals → state → actions).
  • Every team member must accept "API interface".
Coding
  • Follow official Vue.js style guide https://vuejs.org/v2/style-guide/
  • Use Prettier locally.
  • Run Linter before commit.
  • Always change data by mutations.
  • Log interactions with cache as this are hard to debug.
  • Use Chrome debugger. Do not leave thousands of console.log().
  • Use async awaits instead of promises.
Testing
  • Write tests in Jest.
  • Create one test file per method.
Tools
  • Use Axios for handling HTTP requests.
  • Experiment with Live Share for pair programming.
Code review
  • At least one core team member must do a code review
Environment
  • Always fix failing builds in CI as the top priority.
Committing
  • Self-CR before commit. Do not assume others will check your dirty work.
  • Delete pointless console.log() before commit.
  • Adjust to commit message criteria to auto-generate changelog.

DO NOT

  • Do not keep tokens in Vuex.
  • Do not use EventBus.
  • Do not make direct calls to UI from Vuex.
  • Do not create callbacks hell. Do not overuse promises.

Definition of Ready

User Stories

  • Simplified User Story format to describe the issue is used - e.g., I want to <goal> So that <reason>.
  • Epic (label) is assigned (the epic provides team members with background information and additional business value).
  • Acceptance criteria are listed.
  • Dependencies are identified, and no external dependencies would block the item from being completed (e.g. missing decision/information/implementation from other departments/development teams or missing tools).
  • The user story is small enough to be completed in one sprint.
  • The team knows what to do and do not see any blocking points.

Bugs

  • The current behaviour is explained.
  • Steps to reproduce are explained.
  • The expected behaviour is defined.
  • If possible, screenshot or gif is provided.

Definition of Done

User Story
  • All acceptance criteria are fulfilled.
  • Code does not destroy build.
  • All unit tests pass.
  • Code meets our Coding standards.
  • QA verifies the user story.
  • The user story is tested on the newest browsers and newest-1 versions.
  • At least minimal documentation is created.
Bugs
  • Regression unit test is created.

Pipeline & Continuous integration / delivery / deployment

We use CircleCI for continuous integration tool. In the pipeline, we run a few necessary checks, and we check if the unit tests coverage did not decrease and we rebuild the application to verify if the new code does not break up the build.

Test coverage

In the early stages of the development, we decided to keep 100% of unit tests code coverage. That means you will not be surprised by the changed behaviour of the methods in your storefront product. If you break it, you will be notified by the tests.

In the next phases of development, we will make the following decisions associated with testing. We will probably cover critical paths with end2end testing.

Right now, for testing, we use the Jest framework - https://jestjs.io/.

Versioning

Versioning of Shopware-PWA is not dependent on Shopware 6 versioning. We will stick to semantic versioning. As we build the package - all the packages for Shopware 7 (and so on) will have separate versioning.

Change log

We experimentally use conventional commit messages to generate the changelog automatically. https://www.conventionalcommits.org


Checklists

Performance QA Checklist

  • Bundle size verified with webpack-bundle-analyzer.
  • Size lower than 300 kB for JS loaded immediately.
  • Everything that may exceed 300 KB must be lazy-loaded.

More Repositories

1

vue-storefront

Alokai is a Frontend as a Service solution that simplifies composable commerce. It connects all the technologies needed to build and deploy fast & scalable ecommerce frontends. It guides merchants to deliver exceptional customer experiences quickly and easily.
TypeScript
10,628
star
2

storefront-ui

A frontend library for Vue and React that helps developers quickly build fast, accessible, and beautiful storefronts. Made with 💚 by Vue Storefront team and contributors.
TypeScript
2,330
star
3

vue-storefront-api

Vue.js storefront for Magento2 (and not only) - data backend
JavaScript
347
star
4

mage2vuestorefront

Magento to Vue-storefront datapump - synchronizes Products, Categories and Product-to-category links between your Magento2 API and NoSQL database of vue-storefront
JavaScript
199
star
5

magento2

Vue Storefront 2 integration for Magento 2
TypeScript
171
star
6

vsf-capybara

Capybara is a Storefront UI based theme for Vue Storefront. Always Open Source, MIT license. Made with 💚 by Vue Storefront.
Vue
154
star
7

shopify

Vue Storefront 2 integration for Shopify
TypeScript
149
star
8

magento2-vsbridge-indexer

This is official Vue Storefront, native, Magento2 indexer
PHP
69
star
9

ecommerce-integration-boilerplate

Boilerplate for creating new integrations for Vue Storefront Next - open-source frontend for any eCommerce
TypeScript
62
star
10

magento2-rest-client

Magento2 Node.js Rest client
JavaScript
56
star
11

storefront-nuxt3-boilerplate

Nuxt 3 Storefront Boilerplate
Vue
52
star
12

awesome-vuestorefront

😎 A curated list of awesome things related to Vue Storefront 😎
32
star
13

storefront-next13-boilerplate

Vue Storefront Next 13 Boilerplate
TypeScript
26
star
14

vsf-default

Vue Storefront Default theme. Always Open Source, MIT license. Made with 💚 by Vue Storefront. (please consider vsf-capybara instead)
Vue
20
star
15

vue-storefront-1

The open-source frontend for any eCommerce. Built with a PWA and headless approach, using a modern JS stack. We have custom integrations with Magento, commercetools, Shopware and Shopify and total coverage is just a matter of time. The API approach also allows you to merge VSF with any third-party tool like CMS, payment gateways or analytics. Newest updates: https://blog.vuestorefront.io. Always Open Source, MIT license.
TypeScript
18
star
16

template-shopify

Vue
16
star
17

salesforce-commerce-cloud

Vue Storefront 2 integration for Salesforce Commerce Cloud
TypeScript
16
star
18

nuxt3-magento-sdk-storefront

A boilerplate storefront build with the Vue Storefront Magento 2 Integration and Storefront UI
JavaScript
15
star
19

integration-boilerplate

Framework Independent boilerplate containing SDK and API Client starters.
TypeScript
14
star
20

template-magento

TypeScript
14
star
21

storefront-nuxt2-magento2

Magento2 Integration for Vue Storefront 2
TypeScript
13
star
22

storyblok

MOVED TO https://github.com/vuestorefront/vue-storefront/tree/legacy/packages/storyblok
TypeScript
12
star
23

developer.vuestorefront.io

Vue Storefront Developer Portal
TypeScript
9
star
24

theme-utilities

Simple theme inheritance for any JavaScript application
TypeScript
8
star
25

sfui2

TypeScript
8
star
26

storefront-api

Storefront GraphQL API Gateway. Modular architecture. ElasticSearch included. Works great with Magento1, Magento2, Spree, OpenCart, Pimcore and custom backends
TypeScript
8
star
27

storefront-query-builder

ElasticSearch Query builder from the abstract "SearchQuery" object used by storefront-api, vue-storefront-api and vue-storefront projects
TypeScript
7
star
28

cli-integrations

List of CLI's integrations and GitHub Actions to manage them.
JavaScript
4
star
29

bigcommerce

TypeScript
4
star
30

nuxt-sdk-playground

Vue
4
star
31

slidev-theme-vuestorefront

Vue
3
star
32

redis-driver

MOVED to https://github.com/vuestorefront/vue-storefront/tree/legacy/packages/redis-driver
JavaScript
3
star
33

vsf-utilities

Vue Storefront shared utilities
TypeScript
2
star
34

payment-template

JavaScript
2
star
35

checkout-com

MOVED TO https://github.com/vuestorefront/enterprise
TypeScript
2
star
36

eslint-config

JavaScript
2
star
37

template-commercetools

Vue
2
star
38

storefront-playground

TypeScript
2
star
39

vuepress-theme-vsf-docs

Vue
1
star
40

next-sdk-playground

Nuxt playground template for SDK integration boilerplate
TypeScript
1
star
41

integration-team-nginx-reverse-proxy

Nginx reverse-proxy dockerfile for the local multistore setup
1
star
42

integrations-github-workflows

1
star