argoproj / argoproj/argo-workflows

UI: User interface plugins

Open
#6,945 5 comments 26 reactions 0 assignees View on GitHub
area/plugins area/ui
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.