JSPM

@karimov-labs/backstage-plugin-devxp

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 13
  • Score
    100M100P100Q65431F
  • License Apache-2.0

Backstage frontend plugin for developer intelligence — masked identity management, CSV upload, and unmask tooling.

Package Exports

  • @karimov-labs/backstage-plugin-devxp
  • @karimov-labs/backstage-plugin-devxp/src/index.ts

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@karimov-labs/backstage-plugin-devxp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@karimov-labs/backstage-plugin-devxp

A Backstage frontend plugin that provides a Developer Intelligence dashboard for managing masked developer identities. It lets platform teams upload a list of real developer names, store SHA-256–based pseudonyms, and look up or verify masked identities — all without exposing real names to third-party analytics tools.

This plugin is the UI counterpart to @karimov-labs/backstage-plugin-devxp-backend, which must be installed alongside it.


Features

  • Dashboard tab — shows configuration health (salt, API token, endpoint, project ID) and total mapping count, plus an inline unmask tester
  • Settings tab — upload a plain-text CSV of real developer names to generate and store masked hashes; browse and delete individual mappings
  • Hashing algorithm matches the dev-xp-analyzer tool: SHA-256(salt + realName), first 16 hex chars

Requirements

Dependency Version
Backstage >= 1.30
@karimov-labs/backstage-plugin-devxp-backend ^1.0.0
React ^18

Installation

1. Install the packages

# yarn (Backstage default)
yarn workspace app add @karimov-labs/backstage-plugin-devxp
yarn workspace backend add @karimov-labs/backstage-plugin-devxp-backend

# npm
npm install @karimov-labs/backstage-plugin-devxp
npm install @karimov-labs/backstage-plugin-devxp-backend

2. Add the frontend plugin to your app

Edit packages/app/src/App.tsx:

import devxpPlugin from '@karimov-labs/backstage-plugin-devxp';

export default createApp({
  features: [
    // ... other plugins
    devxpPlugin,
  ],
});

3. Add a sidebar navigation item

In your sidebar component (e.g. packages/app/src/modules/nav/Sidebar.tsx), add:

import AssessmentIcon from '@material-ui/icons/Assessment';

// inside your sidebar menu group:
<SidebarItem icon={AssessmentIcon} to="/devxp" text="Dev Intelligence" />

4. Register the backend plugin

Edit packages/backend/src/index.ts:

backend.add(import('@karimov-labs/backstage-plugin-devxp-backend'));

5. Configure app-config.yaml

devxp:
  # Salt used for SHA-256 hashing — must match the salt used in dev-xp-analyzer
  salt: ${DEVXP_SALT}

  # Whether developer names are masked in the analytics tool
  masked: true

  # dev-xp-analyzer API credentials (optional — only needed if calling the analyzer API)
  apiToken: ${DEVXP_API_TOKEN}
  apiEndpoint: ${DEVXP_API_ENDPOINT}
  projectId: ${DEVXP_PROJECT_ID}

Set the corresponding environment variables before starting Backstage:

export DEVXP_SALT="your-secret-salt"
export DEVXP_API_TOKEN="your-api-token"       # optional
export DEVXP_API_ENDPOINT="https://..."        # optional
export DEVXP_PROJECT_ID="your-project-id"     # optional

Security note: The salt and API token are consumed exclusively by the backend and are never sent to the browser.


Usage

Navigate to /devxp in your Backstage instance.

Dashboard tab

Section Description
Configuration Status Green/red indicators for salt, API token, endpoint, and project ID
Developer Mappings Count of stored masked ↔ real name pairs
Unmask Tester Enter a 16-character hex masked name and press Enter to look up the real name

Settings tab

Section Description
CSV Upload Upload a plain-text file with one real developer name per line; the plugin hashes each and stores the mapping
Mappings Table Lists all stored pairs (masked hash → real name) with per-row delete buttons

API

The frontend communicates with the backend via the Backstage discovery API at /api/devxp/. See the @karimov-labs/backstage-plugin-devxp-backend README for full endpoint documentation.


License

Apache-2.0