Skip to content

Commit cbe1174

Browse files
feat(marketplace): Enhanced filtering, badges, plugin details, and metadata display (#1394)
* updating schema Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * showing more plugin metadata * feat: implement exact count filtering with combined URL parameters - Add SupportLevel and SupportProvider enums to MarketplaceSupport types - Export MarketplaceSupport types from marketplace-common package - Implement single-pass exact count calculation for better performance - Add support for combined URL parameters (e.g., spec.support.level=production,spec.support.name=Red Hat) - Update badge system to show exact counts for GA, Community, Tech Preview, and Dev Preview plugins - Optimize filtering logic to handle both single and combined spec.support parameters - Fix import paths to use proper package exports instead of relative paths Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * handling multiple filters Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * adding icon and helperText in filter Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * removing examples/pluin changes Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * updating readme Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * adding changeset Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * adding helpertext for other plugin Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * fixing tsc issue Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * handling new supoort level Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * updating readme Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * updating report Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * chore(extensions): add more plugin examples * chore(extensions): add more plugin examples Signed-off-by: Christoph Jerolimov <jerolimov+git@redhat.com> * chore(extensions): restore pre-installed flag Signed-off-by: Christoph Jerolimov <jerolimov+git@redhat.com> --------- Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Signed-off-by: Christoph Jerolimov <jerolimov+git@redhat.com> Co-authored-by: Christoph Jerolimov <jerolimov+git@redhat.com>
1 parent 2c4b3c0 commit cbe1174

47 files changed

Lines changed: 742 additions & 152 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace': minor
3+
'@red-hat-developer-hub/backstage-plugin-marketplace-common': minor
4+
'@red-hat-developer-hub/backstage-plugin-marketplace': minor
5+
---
6+
7+
### Plugin List Improvements
8+
9+
- Introduced **"Generally Available"** badge with tooltip
10+
- Added tooltips for other badges
11+
- Removed **Verified** badge
12+
13+
### Plugin Details Enhancements
14+
15+
- Added status badges for all support levels: GA, Dev Preview, Tech Preview, Community, Custom
16+
- Added **Publisher**, **Author**, and **Supported By** metadata
17+
- Renamed **Supported version****Backstage compatibility version**
18+
- Removed **Verified** status
19+
20+
### Enhanced Filtering System
21+
22+
- Introduced new filters: **Generally Available**, **Dev Preview**, **Tech Preview**, **Community Plugins**
23+
- Added visual badges with color coding and helper text for filters

workspaces/marketplace/docs/catalog/plugins.md

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,24 @@ All plugins inherit from Backstage's standard Entity interface and include:
9090
encodedData: 'base64encodeddata...'
9191
```
9292

93+
##### Support Information
94+
95+
- **`support`** (object, optional): Support and maintenance information
96+
```yaml
97+
support:
98+
provider: 'Red Hat' # Required: Support provider name, like 'Red Hat', 'IBM', 'Spotify', 'Backstage Community', etc.
99+
level: 'generally-available' # Required: Support level
100+
```
101+
102+
###### Support Level Values
103+
104+
The `support.level` field indicates the maturity and support level
105+
provided bt the `support.provider`. Like:
106+
107+
- **`generally-available`**: Stable, fully supported plugins ready for production use.
108+
- **`tech-preview`**: A technical preview of a plugin that is not fully supported yet.
109+
- **`dev-preview`**: An early-stage plugin.
110+
93111
##### Installation Status
94112

95113
- **`installStatus`** (enum, optional): Current installation status (automatically populated)
@@ -136,6 +154,10 @@ spec:
136154
authors:
137155
- name: 'Tekton Team'
138156
email: 'tekton@example.com'
157+
publisher: 'Red Hat'
158+
support:
159+
name: 'Red Hat'
160+
level: 'generally-available'
139161
categories:
140162
- 'CI/CD'
141163
- 'Kubernetes'
@@ -196,6 +218,8 @@ spec:
196218
| `metadata.description` | `string` | Short description that is shown on the cards (text) |
197219
| `spec.author` | `string` | A single author name, this attribute is automatically converted to `authors` if specified |
198220
| `spec.authors` | `{ name: string, url?: string }[]` | Authors array if a plugin is developed by multiple authors |
221+
| `spec.publisher` | `string` | Who distributes/packages the plugin for RHDH |
222+
| `spec.support` | `{ name: string, level: string }` | Support provider and level information |
199223
| `spec.categories` | `string[]` | Categories are displayed directly as filter and labels |
200224
| `spec.highlights` | `string[]` | Highlights for the details page |
201225
| `spec.description` | `string` | Full description that is shown on the details page (markdown) |
@@ -212,14 +236,6 @@ metadata:
212236
extensions.backstage.io/certified-by: Company name
213237
```
214238

215-
### Verification
216-
217-
```yaml
218-
metadata:
219-
annotations:
220-
extensions.backstage.io/verified-by: Company name
221-
```
222-
223239
### Support type for Core and Community plugins
224240

225241
```yaml

workspaces/marketplace/examples/all-packages.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spec:
1212
- ./packages/backstage-community-plugin-quay.yaml
1313
- ./packages/backstage-community-plugin-tekton.yaml
1414
- ./packages/backstage-community-plugin-topology.yaml
15-
- ./packages/red-hat-developer-hub-backstage-plugin-bulk-import.yaml
1615
- ./packages/red-hat-developer-hub-backstage-plugin-bulk-import-backend.yaml
16+
- ./packages/red-hat-developer-hub-backstage-plugin-bulk-import.yaml
1717
- ./packages/red-hat-developer-hub-backstage-plugin-marketplace-backend.yaml
1818
- ./packages/red-hat-developer-hub-backstage-plugin-marketplace.yaml

workspaces/marketplace/examples/all-plugins.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,24 @@ spec:
99
- ./plugins/3scale.yaml
1010
- ./plugins/acr.yaml
1111
- ./plugins/bulk-import.yaml
12+
- ./plugins/certified-plugin-1-by-vendor-a.yaml
13+
- ./plugins/certified-plugin-2-by-vendor-a.yaml
14+
- ./plugins/certified-plugin-3-by-vendor-b.yaml
1215
- ./plugins/keycloak.yaml
1316
- ./plugins/marketplace.yaml
1417
- ./plugins/no-icon-no-description.yaml
18+
- ./plugins/pre-installed-false.yaml
19+
- ./plugins/pre-installed-true.yaml
20+
- ./plugins/pre-installed-undefined.yaml
1521
- ./plugins/quay.yaml
22+
- ./plugins/search.yaml
23+
- ./plugins/support-community.yaml
24+
- ./plugins/support-dev-preview.yaml
25+
- ./plugins/support-generally-available.yaml
26+
- ./plugins/support-none.yaml
27+
- ./plugins/support-string.yaml
28+
- ./plugins/support-tech-preview.yaml
29+
- ./plugins/support-undefined.yaml
30+
- ./plugins/support-unknown-level.yaml
1631
- ./plugins/tekton.yaml
1732
- ./plugins/topology.yaml
18-
- ./plugins/search.yaml

workspaces/marketplace/examples/plugins/3scale.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,15 @@ metadata:
66
name: 3scale
77
title: APIs with 3scale
88
description: Synchronize 3scale content into the Backstage catalog.
9+
annotations:
10+
extensions.backstage.io/pre-installed: 'true'
911
tags:
1012
- 3scale
1113
- api
12-
annotations:
13-
extensions.backstage.io/certified-by: Red Hat
14-
extensions.backstage.io/verified-by: Red Hat
1514
spec:
16-
icon: https://janus-idp.io/images/plugins/3scale.svg
1715
author: Red Hat
1816
categories:
19-
- API Discovery
17+
- API Discovery API Discovery API Discovery API Discovery
2018
highlights:
2119
- OpenShift support
2220
support: asd

workspaces/marketplace/examples/plugins/acr.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ metadata:
77
title: Container Image Registry for ACR
88
description: View container image details from Azure Container Registry in Backstage.
99
annotations:
10-
extensions.backstage.io/verified-by: Red Hat
10+
extensions.backstage.io/pre-installed: 'true'
1111
spec:
12-
icon: https://janus-idp.io/images/plugins/oci-acr.svg
1312
author: Red Hat
1413
lifecycle: production
1514
categories:
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# yaml-language-server: $schema=../../json-schema/plugins.json
2+
apiVersion: extensions.backstage.io/v1alpha1
3+
kind: Plugin
4+
metadata:
5+
namespace: marketplace-plugin-demo
6+
name: certified-plugin-1-by-vendor-a
7+
title: Certified Plugin 1 by Vendor A
8+
description: This is a certified plugin example
9+
annotations:
10+
extensions.backstage.io/pre-installed: 'true'
11+
extensions.backstage.io/certified-by: Vendor A
12+
spec:
13+
categories:
14+
- Test plugin entity
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# yaml-language-server: $schema=../../json-schema/plugins.json
2+
apiVersion: extensions.backstage.io/v1alpha1
3+
kind: Plugin
4+
metadata:
5+
namespace: marketplace-plugin-demo
6+
name: certified-plugin-1-by-vendor-a
7+
title: Certified Plugin 2 by Vendor A
8+
description: This is a certified plugin example
9+
annotations:
10+
extensions.backstage.io/pre-installed: 'true'
11+
extensions.backstage.io/certified-by: Vendor A
12+
spec:
13+
categories:
14+
- Test plugin entity
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# yaml-language-server: $schema=../../json-schema/plugins.json
2+
apiVersion: extensions.backstage.io/v1alpha1
3+
kind: Plugin
4+
metadata:
5+
namespace: marketplace-plugin-demo
6+
name: certified-plugin-3-by-vendor-b
7+
title: Certified Plugin 3 by Vendor B
8+
description: This is a certified plugin example
9+
annotations:
10+
extensions.backstage.io/pre-installed: 'true'
11+
extensions.backstage.io/certified-by: Vendor B
12+
spec:
13+
categories:
14+
- Test plugin entity

workspaces/marketplace/examples/plugins/keycloak.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ metadata:
66
name: keycloak
77
title: Authentication and Authorization with Keycloak
88
description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities.
9+
annotations:
10+
extensions.backstage.io/pre-installed: 'true'
911
spec:
10-
icon: https://janus-idp.io/images/plugins/keycloak.svg
1112
developer: Red Hat
1213
lifecycle: production
1314
categories:

0 commit comments

Comments
 (0)