Skip to main content

UI Overview

The frontend (app/) is a Next.js 16 App Router application (React 19), dark mode default, Bloomberg-styled monospace numerics.

The mental model is SWPM + MARS, on-chain. A non-technical user coming from Bloomberg should map every page to a screen they already know — see SWPM / MARS parity for the full feature map. Each UI page below calls out its SWPM/MARS analog explicitly.

Site map

RoutePageAudience
/Redirects to /org (app/src/app/page.tsx)
/orgParty Selector — pick the org you're acting asDemo
/org/[orgId]Redirects to the role-specific landing page (blotter, operator, or oversight)
/org/[orgId]/loginOrg login — per-org auth handshakeAll
/org/[orgId]/callbackOIDC callback landing pageProduction
/org/[orgId]/blotterBlotter — positions, exposure, FpMLTrader / risk
/org/[orgId]/workspaceWorkspace — leg composer + pricingTrader
/org/[orgId]/csaCSA — collateral, marks, disputesOperations / counterparties
/org/[orgId]/ledgerLedger — onchain event stream + cid deep-linksJudges / ops / anyone proving "it's on-chain"
/org/[orgId]/operatorOperator — co-sign queue, lifecycle events, scheduler health, manual fixingsOperator only
/org/[orgId]/oversightRegulator oversight blotterRegulator only
/org/[orgId]/timelineRegulator business-event timelineRegulator only
/org/[orgId]/csa-boardRegulator CSA oversight boardRegulator only

All public URLs are defined in app/src/shared/constants/routes.ts. (auth) is a Next.js route group — it's a source-tree marker, not part of the URL.

In sandbox topology every <orgId> resolves to the same Canton sandbox; in network each goes to a different participant URL.

Conventions

Per .claude/rules/frontend-style.md:

  • Feature modules are self-contained: page + components + types + constants + validation.
  • Shared code only in shared/ — kept minimal.
  • React Query for all ledger data fetching.
  • Auth context provides the active ledger JWT; all ledger API calls use it.
  • No inline styles — Tailwind classes only.
  • shadcn/ui for primitives.
  • Monospace font for financial numbers.
  • Green = receive, red = pay for direction.