Ecommerce demo of micro-frontends architecture using Astro as a shell
Find a file
2024-01-22 23:18:53 +01:00
app-cart fix(cart): remove product when count zero 2024-01-22 23:18:53 +01:00
app-heading feat: orchestrator usage across MFs (#1) 2024-01-22 23:15:28 +01:00
app-products feat: orchestrator usage across MFs (#1) 2024-01-22 23:15:28 +01:00
app-shell chore: clean up index.astro 2024-01-21 22:48:36 +01:00
assets chore(readme): more info on the app 2024-01-21 20:18:50 +01:00
utils feat: orchestrator usage across MFs (#1) 2024-01-22 23:15:28 +01:00
.gitignore initial commit 2024-01-21 20:00:22 +01:00
LICENSE initial commit 2024-01-21 20:00:22 +01:00
package-lock.json initial commit 2024-01-21 20:00:22 +01:00
package.json initial commit 2024-01-21 20:00:22 +01:00
README.md chore(readme): add background 2024-01-21 20:46:40 +01:00

Scalable Shoe Shop

An e-commerce page as a demonstration of using Astro as shell for a microfrontends application.

Scalable Shoe Shop Screenshot

About

Each app is a node workspace to allow for running common commands easily and developing libraries they can install as dependency (e.g., utils). In a real-world setting they could be maintained in separate repositories by different teams.

This demo takes advantage of EcmaScript Modules (ESM) and url-imports to do client-side composition of microfrontends. Express is used for serving assets, but ideally one would have a dedicated CDN hosting them.

Code structure

  1. app-heading & app-cart are React apps
  2. app-products are a SolidJS app
  3. app-shell is an Astro app
  4. utils is a library for utilities that the micro-frontend apps can install as dependency

Background

This project was initially forked from this repo, then moved here for a cleaner history. Massive thanks to sasoria for his work on the initial demo.

Features

  • Client-side composition of microfrontends
  • 📦 Multiframeworks with Astro Islands
  • 🚀 SSG/SSR supported by Astro

Usage

Micro frontends

  • Build each micro frontend with npm run build
  • Start each micro frontend with npm run preview

For production you would start the node server in the server folder, after building.

Shell

  • Build the shell with npm run build
  • Start the shell with npm run preview

Shared dependencies

Dependencies such as react and react-dom are shared across applications. They are fetched from esm.sh and gets cached in the browser, reducing the bundle size. Each app can share other dependencies as well through url imports.