Repository navigation
feat(cacti-ledger-browser): add SATP UI inspector (#4617) - #4736
abhayrajjais01 wants to merge 4 commits into
Conversation
|
Every PR must be linked to an issue carrying the Please edit the PR description to include a closing keyword and an issue number, for example:
The referenced issue must already carry ⌛ If this is not resolved within 7 days of the Members of the hyperledger-cacti GitHub organization and Dependabot are exempt from this check. |
0469a57 to
3bd1ccf
Compare
|
@abhayrajjais01 thank you, this is super useful. Could you please give us a deployed link so other maintainers can inspect it without running it locally? |
3bd1ccf to
c1d1edd
Compare
|
@RafaelAPB, https://cacti-browser-ui-abhayrajjais01s-projects.vercel.app/ take a look and give me feedback on it, more than happy to fix and work on |
469257e to
df352a0
Compare
I am unable to open that link without authentication |
|
@RafaelAPB , |
…4617) Add a native React application to cacti-ledger-browser for real-time telemetry, monitoring, and forensic inspection of Secure Asset Transfer Protocol (SATP) gateways and cross-chain transfers. Key Features: - Transfers Dashboard: KPI metrics and filterable sessions table - Lifecycle Stepper: 4-stage progression (Stage 0 to 3) with status - Gateway Topology: Visual route from Origin to Destination DLT - Failure Lens: Diagnostic banner for failed transfers and rollbacks - Cryptographic Audit Trail: Chronological logs with JSON viewer modal - Gateway Health & Network: Live ping status and supported ledgers - Interactive Demo Mode: Realistic mock scenarios for UI testing - Compliance Export: One-click JSON export for session audit bundles Fixes hyperledger-cacti#4617 Assisted-by: google:gemini-2.5-pro Signed-off-by: abhayraj jaiswal <abhayraj916146@gmail.com>
df352a0 to
07ddfb2
Compare
|
@abhayrajjais01 could you please add me as contributor in your fork so I can push some changes to this PR? |
|
@RafaelAPB, |
Reworks the SATP inspector for production use and hardens the ledger browser around it. Inspector: correct default gateway endpoint (OAPI port 4010); healthcheck-backed app status; live gateway data only (canned data moved to a bundled, clearly-labeled example gateway); hand-written typed API client keeping zero workspace dependencies (CI-enforced); hardening against hostile gateway payloads (coercing transforms, fuzz tests, strict isHttpUrl validation of instance URLs); polling with capped exponential backoff and a bounded 7-day audit window; five pages - sessions dashboard (KPI cards doubling as filters, search, sortable columns, keyboard-accessible rows), session detail (audit timeline, proofs, transfer path, failure lens, JSON audit-bundle export), gateways, messages, and Prometheus-backed overview. Shell: plugin-app crash guards (ErrorBoundary at route/card/shell levels), setup-guide links on error states, actionable connection-failed dialog; runtime configuration tier (/config.js) with strict validation and graceful degradation; local-first config defaults; slim self-hosted backend profile (Postgres + PostgREST + example gateway, one compose command, seeded for an out-of-the-box demo) alongside the full Supabase profiles; first frontend test infrastructure (vitest + RTL + fast-check, 135 tests; jest suite unchanged); production Docker image (non-root nginx, CSP/security headers) and vite preview hardening; documentation - user guide, demo guide, trust model and an in-app setup guide. Fixes hyperledger-cacti#4617 Assisted-by: zai:GLM-5.3 Signed-off-by: Rafael Belchior <rafael.belchior@tecnico.ulisboa.pt>
|
@abhayrajjais01 — thank you for the great starting point. I pushed a follow-up commit on top of yours that reworks the inspector for production use and hardens the ledger browser around it. Let's work together, and please do not use push forces (only force-with-lease), so we don't accidentally override each others work. This PR still needs a lot of work before merging. In particular, 3 big areas for improvement: 1) un-hardcode gateway connections/data, we should be able to provide the URLs for different gateways that are instantiated with each other's address and inspect a real flow; 2) the visual identity is fragmented, follow the design system introduced here #4746; 3) reproducibility: it should be a few clicks to instantiate a CBDC demo and configure the SATP browser based on it |
Resolve merge conflict in .cspell.json with upstream/main. Apply Cacti Design System tokens from PR hyperledger-cacti#4746 to cacti-ledger-browser: - Add cacti-tokens.css design tokens - Update theme.ts with Cacti green palette and Barlow typography - Update index.html, nginx.conf, and vite.config.mts for font loading - Refine PageTitle, SectionTitle, and SessionsPage KPI card styling Fixes hyperledger-cacti#4617 Signed-off-by: abhayraj jaiswal <abhayraj916146@gmail.com>
…dentity Add persistent collapsible navigation sidebar inspired by Headlamp UI layout: - Add Sidebar component with collapsible drawer and localStorage persistence - Use official Hyperledger Cacti brand mark illustration in the brand header - Add network context badge, Overview link, and active application hierarchy - Integrate quick Add Application modal trigger from the sidebar - Redesign HeaderBar with breadcrumbs, Headlamp-style keyboard search (/), documentation, and settings - Add comprehensive vitest suite for sidebar navigation behavior Signed-off-by: abhayraj jaiswal <abhayraj916146@gmail.com>
|
Hi @Rafael-Belchior, I have pushed a new commit ( Summary of Changes:
here are the screenshot for the same---
Looking forward to your review and feedback! |
|
https://cute-quokka-56d44a.netlify.app/ here is the deployed link |
|
@abhayrajjais01 please check the checks that are failing and solve the conflicts |


Description
This pull request implements the SATP UI Inspector inside
cacti-ledger-browserto enable real-time telemetry, monitoring, and deep forensic inspection of Secure Asset Transfer Protocol (SATP v2 / Hermes) gateways and cross-chain transfers.fixes #4617
Key Features & Architectural Additions:
App Category & Registration:
AppCategory.CrossChainwithCompareArrowsicon and category metadata.satpInspectorin global GUI application registry (common/config.tsx).Core Queries & REST API Integration:
GET /get-sessions-ids: List of active and archived session IDs.GET /status?SessionID=...: Live session stage, substatus, step, and network pair.GET /audit?startTimestamp=...&endTimestamp=...: Verifiable chronological audit trail.GET /healthcheck: Live gateway operational health status.GET /supported-ledgers: List of active blockchain connectors.Forensic Inspection Views & Components:
Reviewer-Friendly Interactive Demo Mode & Standalone Support:
Screenshots
Transfers Dashboard -> KPI summary metrics, search bar, status tabs, and transfer table

Failure Lens & Stepper -> Aborted transfer diagnosis, failing step badge, rollback status, and 4-stage stepper

Audit Trail & JSON Modal -> Proof log table with interactive syntax-highlighted JSON viewer

Gateway & Network Health -> Health status banner, supported networks, and protocol specifications

🗺️ SATP UI Inspector — Architecture & User Workflow
The SATP UI Inspector provides an end-to-end telemetry and forensic auditing interface for Secure Asset Transfer Protocol (SATP) gateways within the
cacti-ledger-browser.graph TD A["Cacti Ledger Browser (/satp)"] --> B["Navigation Bar"] B --> C["Sessions Dashboard (/)"] B --> D["Gateways Page (/gateways)"] B --> E["Messages Page (/messages)"] B --> F["Overview Page (/overview)"] B --> G["Setup Guide (/guide)"] subgraph "1. Sessions Dashboard" C --> C1["KPI Filter Cards: Total, Completed, In-Progress, Failed, Rollbacks"] C --> C2["Filterable & Sortable Sessions Table"] C --> C3["Search & Keyboard Navigation (Tab, Enter)"] C2 -->|Click Row / Inspect| H["Session Detail View (/satp/session/:id)"] end subgraph "2. Forensic Session Detail" H --> H1["Transfer Route: Origin DLT -> Channel -> Destination DLT"] H --> H2["Audit Timeline: Sequential Proof Numbers (Ascending)"] H --> H3["Cryptographic Proofs: Lock & Mint Claims"] H --> H4["Failure Lens: Root Cause Diagnostics & Rollback Status"] H --> H5["Compliance Export: One-Click JSON Audit Bundle"] end subgraph "3. Gateway Telemetry & Messages" D --> D1["Live Healthcheck Ping (Port 4010 / 3013)"] D --> D2["Supported Ledgers (Besu, Fabric, Ethereum, Polygon)"] E --> E1["Cross-Gateway Message Sequence Audit Log"] end subgraph "4. Observability & Deployment" F --> F1["Prometheus Metrics (Port 9090): Latency & Throughput"] G --> G1["In-App Guide with Copyable Docker & Yarn Commands"] endFollow-up: iteration on top of the initial implementation
Inspector
tools/docker/ledger-browser-config-postgrest, port 3013) instead of fabricated sessions being mixed into resultsisHttpUrlvalidation (rejects non-http schemes, embedded credentials, homoglyph hosts…)Ledger browser shell
ErrorBoundaryat app-route, app-card and shell levels — one broken app no longer takes the whole browser down/config.js): one build, many environments, strict validation with graceful degradationvite previewhardeningsatp-inspector-demo.md), trust model, and an in-app Guide page (last menu entry) with copyable setup commandsTry it
docker compose -f tools/docker/ledger-browser-config-postgrest/docker-compose.yml up -d corepack yarn workspace @hyperledger-cacti/cacti-ledger-browser start # http://localhost:3001The seeded "SATP Inspector (example data)" instance works immediately. For a real gateway use the plugin's
docker-compose-satp.yml(REST on 3012) — or point an instance at port 4010 whiletest:integration:docker-localruns to watch real transfers live.yarn tsc, eslint, cspell, prettier (CI scopes) green; nogenerated/edits. Happy to walk through any of the decisions — the biggest ones were dropping default-on demo data, the zero-dependency posture, and the local-first defaults.