Split base admin UI, plugin registration, block API to a new repository and lib. This is a means to separate what makes the Admin UI tick, from the current repo and Meteor and allowing a future.
Goals
The Admin UI core, which currently is the base UI, routing, apollo, authentication, and the build tool, will be split into a separate library to become a reusable component in admin UI projects. Think create-react-app
but specifically for Reaction Admins. It is responsible for all the mundane stuff needed to get started that no-one really wants to do... like configuring Webpack and installing a million npm dependencies for testing/building.
Plugins that once lived in Admin UI monolith will be split into separate plugin repos and be deployed via NPM.
Plugins will also be standalone. The repo will contain both the package to be built and deployed to npm, as well as an integration environment of the Admin UI Core for building, testing, and if wanted, production builds/deploys.
This means that plugins can be standalone UI's completely self-contained from a monolithic user interface, but can also function as plugins in a monolithic UI. This solves the problem of, how do I test my plugin without the admin, among many others.
You will own your admin project and are in control of your own package.json
for your dependencies. It will be your responsibility to install the admin core package, all the plugins you want, and with a very lightweight directory structure, be able to register the plugins for the admin. It'll work very much like next.js
(but will most likely NOT be built on next.js. time will tell.Maybe there will be a
create reaction-admin` script to automate the basic setup.
Reaction Admin
, this repo, will be an example of that base folder structure with the OSS plugins installed. It would then be a template repo and a good starting point for your own UI customizations. Your updates to the major portions of the app will come from various npm packages, and not checking out / pulling from GitHub.
I want to get away from having to fork repos, using git submodules and npm linking.
For you visual people
Just keep in mind...
This is my theory deduced from all of the UI work we've done so far. We do have the precedent of this working in Catalyst, and Component Library, as well as in the API with adding plugins from NPM.
I believe this is possible, but it's theoretical until it made a reality.