1. Ideas
2. Design
3. UI Design
4. Implementation(code)
5. Testing
6. Publishing
7. Integration/deployment
8. debugging
9. upgrade
10. uninstall
Idea
...
UI based plugin(web/mobile)
To Load the Plugin.
Prerequisite from Framework
The framework should provide hooks so that the plugin can load its UI in the required position.
The framework should expose placeholders on the UI in different places like Homepage, Profile page, course page etc
The framework should provide a mechanism to load the file's of the plugin like Js, CSS, and any other asset
Data access from UI
Prerequisite form Framework
The framework should expose some of the services that plugin can access like,
1. HTTP service
2. logger service
3. Auth service
4. Eventbus service
5. listner service
the plugin should be able to get the data like who is the current logged in user and the currently active session details so as to use this to call the API to get the required data to the plugin.
JS will decorate the DOM
once the data is available from the service to the plugin, plugin JS will use this data to decorate the DOM and will use two-way data binding.
User Interaction with the pages
Once the DOM is created and updated with data now it will wait for user interaction or any event that is listened by the plugin.
Respond to the event
the framework will provide event handling and broadcasting mechanism that a plugin can use to call other plugins or to broadcast its event. the plugin must register to these events and handle accordingly.
the plugin can also emit events so that any dependant plugin can do a callback on that
Data Update from UI
once the user interaction is handled and all the data processing is done the data need to be persisted. plugin calls the services to do this process.
For plugins(web/server/mobile)
...
Plugins will be version controls this will help in keeping the history of the plugin and helpsĀ collaborate on the plugin with other developers
Upgrade
Each plugin should have a roadmap for self-upgrade. if the framework is upgraded then it should consider for plugins backward compatibility and an alert have to be sent to the plugin contributor so that the developer can plan for a plugin upgrade.
...