I need to build a modular application that can be assembled from plugins. Each deployment can be customized by choosing the right set of plugins and building a particular layout.
So I need:
- a shell app
- a collection of UI plugins that are npm modules
- plugins can be mounted in menus, tabs or fixed points in UI
- some plugins are capable to load other plugins (eg. as tabs)
- a configuration file that describes how plugins are assembled together to build the application
Application start flow example:
-
- shell app is loaded
-
- shell app reads from configuration file the mount points
– loads plugins in fixed points (eg. in a div on the front page)
– creates menus and links to plugins
– creates tabs and links to plugins
– plugins that are loaded and have mount points will load or link to other plugins
- shell app reads from configuration file the mount points
- user selects a menu
- the linked plugin is loaded on screen
Can anyone provide some feedback on my approach and possible options?