Back to IntegrationsREGISTER YOUR WALLETSource →
Client-Side App
Herald + React SPA
Build a single-page application with React and Vite that integrates with Herald through your backend proxy. Components for liquidation alerts, governance broadcasts, yield alerts, and usage monitoring — all keeping your API key server-side.
Ready to ship?
Start sending zero-PII notifications in minutes.
ZK-SECURE SOLANA NATIVE
App Structure
Main App component composing dashboard panels.
React SPA / App Structure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { LiquidationPanel } from './components/LiquidationPanel';import { GovernanceBoard } from './components/GovernanceBoard';import { YieldAlert } from './components/YieldAlert';import { UsageDisplay } from './components/UsageDisplay';
export function App() { return ( <div style={{ maxWidth: 900, margin: '0 auto', padding: 24 }}> <h1>Herald Protocol Dashboard</h1> <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 16 }}> <LiquidationPanel /> <GovernanceBoard /> <YieldAlert /> <UsageDisplay /> </div> </div> );}Call API via Backend Proxy
Client components call your backend (never expose the Herald API key).
React SPA / Call API via Backend Proxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
export function LiquidationPanel() { async function sendAlert() { const res = await fetch('/api/notify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ wallet: '7xR4mKp2n...', subject: '⚠️ Liquidation Warning', body: 'Health factor dropped to 1.05. Add collateral immediately.', category: 'defi', }), }); const data = await res.json(); console.log('Sent:', data.notificationId); }
return ( <div> <h2>⚡ Liquidation Alert</h2> <button onClick={sendAlert}>Send Warning</button> </div> );}Common Patterns
Protocol dashboard UI components
Notification form with wallet input
Usage and quota monitoring
Billing status display
Start building with Herald
Clone the examples repo, copy the code that fits your stack, and deploy.