argoproj / argoproj/argo-workflows
UI: User interface plugins
- Dominant language
- Go
- Stars
- 17k
- Forks
- 3.7k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 138
Description
Currently, to add a new resources to the UI you need to implement both backend and frontend changes:
* Add new proto.
* Write some Golang code.
* Implement the UI changes.
Unlike workflows APIs, the events and dataflow APIs are generic, we could replace them with a "dynamic" API that uses the `dynamic.NewClient`. That would open up a bunch of APIs that could be used to support any resource we wanted.
This dynamic API would make the events and dataflow APIs redundant.
Argo CD has a UI extension mechanism to load the rollouts into the UI that is proven. We can lift inspiration from this for a similar feature in workflows.
Et voila - we have a user interface with extensibility.
Other needs:
* Add new routes and left-hand nav items to the UI.
* Embed UI elements into other pages to add use case specific features.
* A way to easily package and publish UI extensions.
Workflow APIs are too complex to generalise, e.g. there is as `/suspend` API with logic behind it. So we need a way for users to plugin logic too (TBD).
Contributor guide
Research direction
Start by reviewing the proposed dynamic API using dynamic.NewClient and the existing events and dataflow APIs, then compare Argo CD's UI extension mechanism. The issue names no files or tests; done would require an agreed design covering API extensibility, UI routes and navigation, embedded elements, packaging, and user-provided logic.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, backend, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100