Skip to content

Asset Admin — Superadmin (Platform Console)

Version: 1.0.0
Date: 2026-05-17
Site Key: asset-admin-superadmin
Site Family: CRUD-Sites (legacy CRA stack)
Implementation Repo: webapp-asset-admin-superadmin
Typical URL: Internal / admin host (Material Dashboard shell under /admin)
Extends: all-sites.md


Site Purpose

Internal SUPER_ADMIN console for Omnivoltaic platform operations. It is the configuration and CRUD layer for identity, clients, PayGo accounts, thing catalog (SKUs, batches, fleets, items, firmware), avatar shadow records, events, and support tooling.

It is not the primary live fleet map / device monitoring experience. Cross-tenant telemetry dashboards live in Asset Admin — Distributor (webapp-asset-admin-distributor-v2, /dashboards), where SUPER_ADMIN signs in for map-centric fleet health.


Roles and Access

JWT roleName from login (OVS_TOKEN_KEY / preferences). Route definitions in src/routes/routes.ts are overwhelmingly SUPER_ADMIN only.

Role (JWT roleName) Typical use of this app
SUPER_ADMIN Primary operator — full /admin menu
DISTRIBUTOR, DISTRIBUTOR_STAFF, GENERAL AGENT, SERVICER, SALES Declared in auth constants; not the main operational UI for distributors/agents (they use distributor v2)

Sidebar visibility filters routes where item.permissions includes the user’s roleName or subrole name (src/layouts/Admin.tsx).


Base path: /admin/*. Auth: /auth/* (src/routes/index.tsx).

Section Representative paths Purpose
My Settings /admin/settings/profile, workspace, security User profile placeholders
Identity /admin/organizations, /admin/users, /admin/roles Orgs, users, roles (client/auth services)
Client /admin/distributors, /admin/suppliers, /admin/admin-customers, /admin/servicer, /admin/client-service Distributor and partner CRUD
Accounts /admin/thing-fleet/client-fleet, /admin/asset-accounts, message groups/templates PayGo accounts; client-scoped fleet list
Thing /admin/dashboard, /admin/sku, /admin/batch, /admin/thing-fleet, /admin/firmware, /admin/item, /admin/codegen, /admin/thing-broker, /admin/avatar, check-in routes Catalog, batches, fleets, items, codegen, avatar admin
Event /admin/events-events, events-items, events-signal, events-broker, events-publisher Platform event streams
Support /admin/apps, /admin/tigstack Support apps / Tigstack

Fleet in superadmin = admin CRUD (create fleets, assign/reassign items and batches, code-gen settings), not v2 Device Monitoring.


Data Sources

Source Default endpoint pattern Used for
Federated GraphQL federated-graphql-api.omnivoltaic.com/graphql Most entity CRUD, avatar CSV export, accounts
Thing GraphQL thing-use-microservice-prod.omnivoltaic.com/graphql Thing-make simulator / uploads (THING_MAKE_API)
Ecommerce GraphQL Configured in src/config.ts Ecommerce admin slices
REST / proxies api.omnivoltaic.com, Grafana proxy constants Tickets, external links

Apollo clients: src/utils/client.ts, clientSimulator.ts, thingMakeSimulator.ts.

Apps are organized by microservice under src/apps/ (things, accounts, clientService, events, support, ecommerce) — see src/apps/README.md.


Avatar Module (/admin/avatar)

Distinct from distributor v2’s read-only device snapshot viewer.

Concern Superadmin Distributor v2
Purpose CRUD on Avatar entities Live telemetry view for operators
UI List / add / edit / activate / deactivate / delete Device Details GATT tabs
Attributes Structured att, cmd, sts, dta, dia arrays getDeviceSnapshotWithGattMeta
Export Batch avatar att CSV via federated API Per-item export on /thing/item

Shadow linkage: each avatar maps 1:1 to an Item (shadow). Telemetry fields such as opid (device serial) and ccid (SIM ICCID) are stored under att when devices report them.


Fleet Administration (src/apps/things/app/fleet)

  • Create/update/delete ItemFleet
  • Assign items and batches to fleets; holding-fleet reassignment flows
  • Fleet-linked code generation settings (CodeGenSettings.tsx, FleetProvider context)
  • Menu duplicates: Accounts → “Fleets” (client-fleet) and Thing → “Item Fleet” (thing-fleet)

No equivalent to v2 FleetOverviewTab, Last Seen histogram, or historical route playback.


SUPER_ADMIN vs Distributor v2 (cross-app)

Capability Superadmin (this app) Distributor v2
PayGo / customers / unlock codes Global asset accounts, templates Client-scoped accounts & workflows
Live fleet map & health No Yes — /dashboards
Item/fleet assignment Full batch/fleet tooling Items list, agent assignment
User / org / distributor admin Full identity + distributors Staff & agents only
Avatar entity editing Yes Read-only snapshot + CSV export
Thing subgraph (map pins) Via federation / thingMake Direct Thing GraphQL for SUPER_ADMIN map

Implementation Notes

  • Stack: Create React App, React Router, Material UI (Mosaic-derived admin template).
  • Not the Next.js Mosaic v2 app; scaffold target for new CRUD sites is dirac-uxi-crud aligned with distributor v2.
  • Legacy Overview Dashboard at /admin/dashboard is separate from v2 Assets Dashboard.


Change Log

v1.0.0 — 2026-05-17

  • Initial superadmin site spec aligned with webapp-asset-admin-superadmin
  • Documented split of responsibilities vs distributor v2 for SUPER_ADMIN fleet/avatar work