Shoppy is a demo application that showcases the capabilities of Metabase's React Embedding SDK. It is a simple e-commerce dashboard that allows shop owers to view and analyze sales data.
The demo is available at https://embedded-analytics-sdk-demo.metabase.com.
This demo uses the data from the hosted Metabase Cloud instance and provides a hosted JWT server, therefore you do not need to run the Metabase server and JWT server locally.
-
Create local environment files.
cp .env.example .env
-
Install the required dependencies.
yarn
-
Run the React frontend.
yarn dev
-
Disable CORS in your browser. You can find how to do it here https://medium.com/@beligh.hamdi/run-chrome-browser-without-cors-872747142c61; also you can use a browser extension.
-
Visit
http://localhost:3004in your browser.
Important
The following sections are for Metabase employees who are working on the embedding SDK. If you are not a Metabase employee, you can skip the following sections.
- Clone
.env.docker.exampleto.env.dockerand set the properPREMIUM_EMBEDDING_TOKENvalue. - Run Docker via
yarn docker:upfor theproductionbuild orWATCH=true yarn docker:upfor the development build with thewatchsupport.- The command launches a local MB instance, the Shoppy DWH, Shoppy API and Shoppy Client. The local Metabase is seeded from the committed serialized data (
./metabase/metabase_data.tar.gz), so no database dump is needed. - Visit
http://localhost:4400.
- The command launches a local MB instance, the Shoppy DWH, Shoppy API and Shoppy Client. The local Metabase is seeded from the committed serialized data (
- To stop containers run
yarn docker:down. - To remove containers and images completely run
yarn docker:rm.
To run the containers with a locally built metabase.jar and/or a locally built Embedding SDK:
- Copy a locally built
metabase.jarto./local-dist/metabase.jar. Without it, themetabase.jarfrom the Docker image is used. - Copy a locally built Embedding SDK package to
./local-dist/embedding-sdk. Without it, the@metabase/embedding-sdk-reactversion frompackage.jsonis used. - Run
yarn docker:local-dist:upto start the containers using the local dist from./local-dist. - To remove containers and images completely run
yarn docker:rm.
-
Place the metabase repository in
../metabase -
Open a new terminal and run
yarn build-release:cljs && yarn build-embedding-sdk:watchin the metabase repository. This watches for changes and builds the embedding SDK in development mode. -
Re-run the following command every time you make changes to the embedding SDK's source. This re-links the built SDK to the demo application.
yarn dev:link && yarn dev
If you cannot use the hosted JWT server, you can run the JWT server locally.
-
Update the API server's environment variables in
api/.env. If you are a Metabase employee, refer to the "Shoppy - Environment File" item on the 1Password vault. -
Run the API server.
cd api && yarn && yarn dev
-
Run the React frontend.
yarn dev:link && yarn dev
The e2e tests run the local Shoppy stack (a local Metabase seeded from the committed serialized data) and drive it with Cypress.
- Clone
.env.docker.exampleto.env.dockerand set the properPREMIUM_EMBEDDING_TOKENvalue. - Run
yarn docker:e2e:up --waitto start all required containers. - Run the tests:
cd e2e && yarn cypress:run(headless) orcd e2e && yarn cypress:open(Cypress UI). - To stop containers run
yarn docker:rm.
CI runs the same suite in .github/workflows/e2e-tests.yml.