Scout-App could potentially support a plugin system. To allow for easier adding of new features. For example, plugins could be dynamically loaded into the app and shown as tabs:
Project Structure
I imagine a plugin's folder structure would look like this:
The package.json would include specific attributes like:
version = which version of Scout-App it works with.
scout-start = The file Scout-App should load into the app.
Acquiring Plugins
There could be a Plugins modal available from the top navigation. It could download a list of available plugins for your version of Scout-App and allow you to download and install them fairly easily.
Alternatively, we could allow users to drag and drop .zip files into the app to have it auto install. However this puts more effort on the part of the user and would require more safety checks and warning messages if the plugin version is not compatible with that version of Scout-App, or if the zip file is not formatted properly.
Potential problems:
Localizing plugins - Do they get localization keys like the rest of the app? How do we enforce this?
Maintaining plugins - We cannot link dynamically to other people's repos, due to security risks. If they're account got hacked and someone modified the code to be malicious, it could do a lot of damage, since they could run any executable or delete or create any file on a user's computer. We would need to have a plugins repo under the scout-app organization or something similar.
Redundant data - Since each plugin would ship with it's own node_modules folder (if needed), then multiple plugins could potentially have the same dependencies and bloat download sizes (not a huge deal).
*
Project Management
This would require creating some tutorials and additional documentation to help developers create plugins.
General idea
Scout-App could potentially support a plugin system. To allow for easier adding of new features. For example, plugins could be dynamically loaded into the app and shown as tabs:
Project Structure
I imagine a plugin's folder structure would look like this:
The
package.json
would include specific attributes like:version
= which version of Scout-App it works with.scout-start
= The file Scout-App should load into the app.Acquiring Plugins
There could be a Plugins modal available from the top navigation. It could download a list of available plugins for your version of Scout-App and allow you to download and install them fairly easily.
Alternatively, we could allow users to drag and drop
.zip
files into the app to have it auto install. However this puts more effort on the part of the user and would require more safety checks and warning messages if the plugin version is not compatible with that version of Scout-App, or if the zip file is not formatted properly.Potential problems:
Localizing plugins - Do they get localization keys like the rest of the app? How do we enforce this?
Maintaining plugins - We cannot link dynamically to other people's repos, due to security risks. If they're account got hacked and someone modified the code to be malicious, it could do a lot of damage, since they could run any executable or delete or create any file on a user's computer. We would need to have a
plugins
repo under thescout-app
organization or something similar.Redundant data - Since each plugin would ship with it's own
node_modules
folder (if needed), then multiple plugins could potentially have the same dependencies and bloat download sizes (not a huge deal).Project Management
This would require creating some tutorials and additional documentation to help developers create plugins.