This repository was archived by the owner on Mar 23, 2019. It is now read-only.

Description
This feature gives third parties the ability to extend the UI with their own views. This would probably be configured at some kind of cluster level, which would install a dependencies and provide metadata about the customization. Initial thoughts we are experimenting with in the MVP:
- Each customization will either be a React component, or a function that returns a React component.
- The customization needs to be pluggable as an npm package, by providing a valid package.json to make it importable at the default export.
- Each customization should provide additional metadata via its package.json at a yet-unknown but well-known property. At a minimum, this would include the route pattern at which to render the customization, as well as a name to show in the navigation sidebar, title bar, app bar, etc.
What is unknown yet is how this can be integrated into a view, and that will drive whether a customization is a function or a component. The main concern lies around the Dashboard component, which handles a lot of view rendering logic for every authenticated view. Should a customization import the Dashboard and render it itself, like all the other views do? At first glance, I would think not. If not, then how do we handle some of the props needed by the Dashboard component? This needs to be solved.