Skip to content

Dashboard UI

Path: services/dashboard-ui/ · Type: UI · Port: 5173

The Dashboard UI is a React + TypeScript single-page application that provides operators and reviewers with a visual interface for monitoring access decay, managing reviews, and exploring principals and assets.

Technology Stack

Technology Purpose
React 18 UI framework
TypeScript Type-safe JavaScript
Vite Build tool and dev server
Tailwind CSS Utility-first styling
React Router Client-side routing
TanStack Query Server-state management and caching

Architecture

graph LR
    UI[Dashboard UI :5173] -->|REST API| AG[API Gateway :8000]
    AG --> PG[(PostgreSQL)]
    AG --> CH[(ClickHouse)]

The UI communicates exclusively with the API Gateway — it has no direct access to databases or Kafka.

Pages

1. Dashboard

The landing page provides an at-a-glance view of the platform's access health:

  • Score distribution chart — histogram of decay scores across all grants.
  • Risk level breakdown — count of grants per risk level (CRITICAL / HIGH / MEDIUM / LOW).
  • Pending reviews — number of open reviews by risk level and SLA status.
  • Recent activity feed — latest score changes, review decisions, and remediations.

2. Principals

Browse and search all known principals (users, service accounts, groups):

  • Principal list with search, filter by platform, and sort by score.
  • Principal detail — profile, associated grants, decay scores over time, review history.

3. Assets

Browse and search data assets:

  • Asset list with search, filter by type and sensitivity.
  • Asset detail — metadata, classification, grants linked to this asset, decay trend.

4. Reviews

Manage the access-review queue:

  • Review queue — filterable by risk level, SLA status, and assigned reviewer.
  • Review detail — full evidence packet, approve/revoke action buttons, justification input.
  • Review history — past decisions with audit trail.

5. Settings

Platform configuration:

  • Connector status — health and last-sync time for each connector.
  • Decay parameters — view (and in dev mode, override) scoring weights and thresholds.
  • Notification settings — configure email, Teams, and Slack channels.
  • User management — manage reviewer roles and permissions.

Key Components

ScoreGauge

A circular gauge component that visualises a single decay score with colour-coded risk level:

Score Range Colour
0–20 (CRITICAL) Red
21–40 (HIGH) Orange
41–60 (MEDIUM) Yellow
61–80 (LOW) Blue
81–100 (Healthy) Green

DecayChart

A time-series line chart showing how a grant's decay score has evolved over time. Built with a charting library (e.g., Recharts) and supports zoom and date-range selection.

ReviewQueue

A sortable, filterable table of pending review packets. Supports:

  • Column sorting (score, SLA deadline, risk level).
  • Bulk actions (assign, escalate).
  • Inline status badges.

A global search component with typeahead that searches across principals, assets, and reviews. Results are grouped by entity type.

Layout

The application shell providing:

  • Top navigation bar with user context and logout.
  • Side navigation with page links.
  • Responsive design for desktop and tablet.

Component Hierarchy

graph TD
    App[App] --> Layout
    Layout --> Nav[TopNav]
    Layout --> Side[SideNav]
    Layout --> Router[React Router Outlet]
    Router --> Dashboard
    Router --> Principals
    Router --> Assets
    Router --> Reviews
    Router --> Settings
    Dashboard --> ScoreGauge
    Dashboard --> DecayChart
    Dashboard --> ReviewQueue
    Principals --> SearchBar
    Assets --> SearchBar
    Reviews --> ReviewQueue

Development

# Install dependencies
cd services/dashboard-ui
npm install

# Start dev server (port 5173)
npm run dev

# Build for production
npm run build

# Run linting
npm run lint

The dev server proxies API requests to http://localhost:8000 by default. Override with VITE_API_BASE_URL.

Configuration

Variable Default Description
VITE_API_BASE_URL http://localhost:8000 API Gateway base URL
VITE_AUTH_MODE azure_ad Authentication mode (azure_ad or dev)
VITE_AZURE_AD_CLIENT_ID Azure AD client ID for MSAL
VITE_AZURE_AD_TENANT_ID Azure AD tenant ID