Looking for feedback on a plugin system, Specifically how each Plugin can define things for the app
I have an app that I am working on to make doing things at work quicker. I work with various AWS services and internal services and I wanted a simple front end to sped up minor things. Think Postman but not just http requests. I have a page you can add that lets you send messages to an SQS queue, I have a page that monitors GitHub Actions for a branch. Right now they are baked into the app, but I want to migrate to a plugin system eventually, so I am trying to figure out a way to make each view/viewmodel self sufficient. I am trying to define a common interface(s) for all these unrelated viewmodels for a few things things.
For the CardView I have a custom class attribute called DisplayableAttribute it takes in 2 strings a Name (example SQS) so a generic name for the view and a string that is used to lookup images in a large nuget package. This creates a card.
Lastly I am not sure on the best method to define what input a class needs. Each Class Needs at least a User Defined Name but might need more. SQS needs a URL, Github needs a branch name(soon to need repo name as well). The idea being that the Core app would load a plugin and when a user wanted to add that to the treeview it would generate a prompt asking for the input before passing it to the viewmodel.
I was thinking tagging each property that the user needs to define with an InputAttribute or just having each view handle its own input in whatever way it deems, but I would like more consistency. I wanted to see what other ideas people had or thoughts on what I have so far.
- What to display in the Treeview.
- What to display in a CardView.
- How to define any inputs needed
For the CardView I have a custom class attribute called DisplayableAttribute it takes in 2 strings a Name (example SQS) so a generic name for the view and a string that is used to lookup images in a large nuget package. This creates a card.
Lastly I am not sure on the best method to define what input a class needs. Each Class Needs at least a User Defined Name but might need more. SQS needs a URL, Github needs a branch name(soon to need repo name as well). The idea being that the Core app would load a plugin and when a user wanted to add that to the treeview it would generate a prompt asking for the input before passing it to the viewmodel.
I was thinking tagging each property that the user needs to define with an InputAttribute or just having each view handle its own input in whatever way it deems, but I would like more consistency. I wanted to see what other ideas people had or thoughts on what I have so far.