All Projects → nonblocking → mashroom

nonblocking / mashroom

Licence: MIT license
Mashroom Server, an Integration Platform for Microfrontends

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
HTML
75241 projects
Handlebars
879 projects
CSS
56736 projects

Projects that are alternatives of or similar to mashroom

micro-frontend-gateway
🌐 Micro Frontends PoC in Angular - GATEWAY
Stars: ✭ 26 (-25.71%)
Mutual labels:  microfrontends
Single Spa
The router for easy microfrontends
Stars: ✭ 10,395 (+29600%)
Mutual labels:  microfrontends
mooa-boilerplate
microfrontends framewrok mooa's boilerplate.前端微服务化框架 Mooa 脚手架示例
Stars: ✭ 30 (-14.29%)
Mutual labels:  microfrontends
react-microfrontends-demo
Demo of microfrontends using React
Stars: ✭ 36 (+2.86%)
Mutual labels:  microfrontends
piral-microfrontend-demo
A demo for microfrontend webshop product page using Piral. 🚀
Stars: ✭ 20 (-42.86%)
Mutual labels:  microfrontends
Microfrontends
Micro-frontend Architecture in Action-微前端的那些事儿
Stars: ✭ 2,696 (+7602.86%)
Mutual labels:  microfrontends
nut
🌰 A framework born for micro frontends
Stars: ✭ 101 (+188.57%)
Mutual labels:  microfrontends
microfest
Manifest management for single page applications driven by micro frontend apps
Stars: ✭ 14 (-60%)
Mutual labels:  microfrontends
Ice
🚀 The Progressive App Framework Based On React(基于 React 的渐进式应用框架)
Stars: ✭ 16,961 (+48360%)
Mutual labels:  microfrontends
dynamico
Dynamico allows a remote (web-like) code push work-flow for continuous delivery of specific features native or web.
Stars: ✭ 96 (+174.29%)
Mutual labels:  microfrontends
micro-frontends-demo
Demo of a micro frontend approach with Web Components. From CodeOne 2019 presentation: Micro Front Ends: Breaking Up the Front-End Monolith
Stars: ✭ 24 (-31.43%)
Mutual labels:  microfrontends
micro-fun
Micro frontends as Fun with Next.js & module federation
Stars: ✭ 55 (+57.14%)
Mutual labels:  microfrontends
react-app-loader
Production ready library for handling Microfrontends
Stars: ✭ 75 (+114.29%)
Mutual labels:  microfrontends
scalecube-js
Toolkit for working in microservices/micro-frontends architecture.
Stars: ✭ 63 (+80%)
Mutual labels:  microfrontends
windowed-observable
Messaging lib using a pub/sub observable scoped by namespaces.
Stars: ✭ 132 (+277.14%)
Mutual labels:  microfrontends
fronts
A progressive micro frontends framework for building Web applications
Stars: ✭ 493 (+1308.57%)
Mutual labels:  microfrontends
Qiankun
📦 🚀 Blazing fast, simple and complete solution for micro frontends.
Stars: ✭ 11,497 (+32748.57%)
Mutual labels:  microfrontends
plastic-bag
An open source library to work with micro frontends.
Stars: ✭ 22 (-37.14%)
Mutual labels:  microfrontends
merkur
tiny extensible javascript library for front-end microservices
Stars: ✭ 45 (+28.57%)
Mutual labels:  microfrontends
frontend
For seeing Ergonode in action please book a demo https://www.ergonode.com/book-a-demo
Stars: ✭ 122 (+248.57%)
Mutual labels:  microfrontends

Mashroom Server

About

Mashroom Server is a Node.js based Microfrontend Integration Platform. It supports the integration of Express webapps on the server side and composing pages from multiple Single Page Applications on the client side (Browser). It also provides common infrastructure such as security, communication (publish/subscribe), theming, i18n, storage, and logging out of the box and supports custom middleware and services via plugins.

Mashroom Server allows it to implemented SPAs (and express webapps) completely independent and without a vendor lock-in, and to use it on arbitrary pages with different configurations and even multiple times on the same page. It also allows it to restrict the access to resources (Pages, Apps) based on user roles.

From a technical point of view the core of Mashroom Server is a plugin loader that scans npm packages for plugin definitions (package.json, mashroom.json) and loads them at runtime. Such a plugin could be an Express webapp or a SPA or more generally all kind of code it knows how to load, which is determined by the available plugin loaders. Plugin loaders itself are also just plugins, so it is possible to add any type of custom plugin type.

Mashroom Portal

Key features

Portal

  • Registration of Single Page Applications written with any frontend framework (basically you just need to implement a startup function and provide some metadata)
  • Automatic registration of SPAs (Remote Apps) on remote servers or Kubernetes clusters (this allows independent life cycles and teams per SPA)
  • Create static pages with registered SPAs (Apps) as building blocks
  • Support for dynamic cockpits where Apps are loaded (and unloaded) based on some user interaction or search results
  • Support for composite Apps which can use any registered SPA as building blocks (which again can serve as building blocks for other composite Apps)
  • Each App receives a config object which can be different per instance and a number of JavaScript services (e.g. to connect to the message bus or to load other Apps)
  • Support for hybrid rendering for both the Portal pages and SPAs (If an SPA supports server-side rendering the initial HTML can be incorporated into the initial HTML page. Navigating to another page dynamically replaces the SPAs in the content area via client side rendering)
  • The App config can be edited via Admin Toolbar or a custom Editor App which again is just a plain SPA
  • Client-side message bus for inter-app communication which can be extended to server-side messaging (to communicate with Apps in other browsers or even in 3rd party systems)
  • Arbitrary (custom) layouts for pages
  • Extensive theming support (Themes can be written in any Express template language)
  • Support for multiple sites that can be mapped to virtual hosts
  • Proxying of REST API calls to avoid CORS problems (HTTP, SSE, WebSocket)
  • Support for global libraries that can be shared between multiple SPAs
  • Delivering of Theme and Portal App resources via CDN
  • Admin Toolbar to create pages and place Apps via Drag'n'Drop
  • Hot reload of SPAs in development mode

Core

  • Shared middlewares and services
  • Service abstractions for security, internationalization, messaging, HTTP proxying, memory cache and storage
  • Existing provider plugins for security (OpenID Connect, LDAP), storage (File, MongoDB), messaging (MQTT, AMQP) and caching (Redis)
  • Integration of (existing) Express webapps
  • Integration of (existing) Express (REST) APIs
  • Role and IP based access control for URLs
  • Definition of access restrictions for arbitrary resources (such as Sites, Pages, App instances)
  • Single configuration file to override plugin defaults
  • Support for custom plugin types
  • Extensive monitoring and export in Prometheus format
  • Hot deploy, undeploy and reload of all kind of plugins
  • No compile or runtime dependencies to the server
  • Fast and lightweight

Quick Start

git clone https://github.com/nonblocking/mashroom-portal-quickstart
cd mashroom-portal-quickstart
npm run setup
npm start

Open http://localhost:5050 in your browser. Users: john/john, admin/admin

Homepage

https://www.mashroom-server.com

Blog

https://medium.com/mashroom-server

Development

For development Node.js >= 16 is required.

After cloning the repository just run

npm run setup

to install all dependencies and build the core packages.

To start the test server:

cd packages/test/test-server1
npm start

The test server will be available at http://localhost:5050

Development Resources

Plugin Examples

https://github.com/nonblocking/mashroom-plugin-demos

Remote Portal App Demos

Dynamic Cockpit Demo

https://github.com/nonblocking/mashroom-demo-dynamic-cockpit

Microfrontend Platform based on Mashroom and Kubernetes Demo

https://github.com/nonblocking/microfrontend-platform-kubernetes

Full Documentation

https://www.mashroom-server.com/documentation

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].