Dashboard — Architecture
🏛️ Application Layout & Data Flow
┌─────────────────────────────────────────────────────────┐
│ REACT / NEXT.JS FRONTEND │
│ - Form State Management (PolicyDraft) │
│ - Status Cards & Telemetry Feed │
└────────────────────────────┬────────────────────────────┘
│
Call Operations via lib/guard/*
│
▼
┌─────────────────────────────────────────────────────────┐
│ LIB / GUARD MODULES │
│ - guardOps.ts (deploy, initialize, set_policy, freeze) │
│ - policyForm.ts (validates draft & serializes ScVal) │
│ - wallet.ts (Freighter Wallet API integration) │
│ - chain.ts (Soroban RPC read queries) │
└────────────────────────────┬────────────────────────────┘
│
Sign & Broadcast via Freighter Wallet
│
▼
Soroban RPC Network🔒 Client-Side Operations
deployGuard(): Computes salt, predicts contract address pre-signing, deploys WASM instance, and re-reads bytecode to confirm verification.initializeGuard(): Binds admin wallet address and agent's 32-byte Ed25519 public key.installPolicy(): Validates form fields, encodesGuardPolicystruct into ScVal map, and submitsset_policy.freezeGuard(): Submits adminfreeze()transaction.unfreezeGuard(): Submits adminunfreeze()transaction.rotateAgentKey(): Submits adminrotate_agent_key()transaction.
