diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba9de6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules +.dist +.vite +dist +.env +*.tsbuildinfo +vite.config.*.js +vite.config.*.d.ts diff --git a/index.html b/index.html new file mode 100644 index 0000000..35b7e36 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + +
+ + + +Status breakdown
+Rolling 24h
+Volume per day (THB)
+Last 7 days
+Environment
+{metric.label}
+{value}
+{metric.change}
+Audit & Error Logs
+System events and admin actions
+| Actor | +Action | +Target | +Timestamp | +Severity | +
|---|---|---|---|---|
| + {demoMode ? redactPII(log.actor) : log.actor} + | +{demoMode ? redactPII(log.action) : log.action} | ++ {demoMode ? redactPII(log.target) : log.target} + | +{log.createdAt} | ++ {log.severity} + | +
Merchant Portfolio
+Live PromptPay to USDT routing
+| Merchant | +Status | +PromptPay ID | +USDT Wallet | +API Key | +Risk Tier | +Actions | +
|---|---|---|---|---|---|---|
|
+ {merchant.name} +{merchant.id} + |
+ + + {merchant.status} + + | ++ {demoMode ? maskPhoneOrPromptpay(merchant.promptPayId) : merchant.promptPayId} + | ++ {demoMode ? maskWallet(merchant.usdtWallet) : merchant.usdtWallet} + | ++ {demoMode ? maskApiKey(merchant.apiKey) : merchant.apiKey} + | +{merchant.riskTier} | +
+
+
+ View
+
+ {canManage && (
+
+ )}
+
+ |
+
Settlement Batches
+TRC20 confirmations + retry controls
+| Settlement | +Amount (THB) | +Amount (USDT) | +Fee % | +Net | +Tx Hash | +Status | +Action | +
|---|---|---|---|---|---|---|---|
| {settlement.id} | ++ {demoMode ? maskAmountTHB(settlement.amountTHB) : `฿${settlement.amountTHB.toLocaleString()}`} + | ++ {demoMode ? maskAmountUSDT(settlement.amountUSDT) : settlement.amountUSDT.toLocaleString()} + | +{settlement.fee}% | ++ {demoMode ? maskAmountUSDT(settlement.netAmount) : settlement.netAmount.toLocaleString()} + | +{settlement.txHash} | ++ {settlement.status} + | ++ {canRetry && ( + + )} + | +
Realtime Transactions
+PromptPay transfers with settlement state
+| Reference | +Merchant | +Amount (THB) | +Status | +Created | +
|---|---|---|---|---|
| {tx.reference} | +{tx.merchant} | ++ {demoMode ? maskAmountTHB(tx.amountTHB) : `฿${tx.amountTHB.toLocaleString()}`} + | ++ {tx.status} + | +{tx.createdAt} | +
Webhook Intake
+Signature validation + deduplication
+| Event | +Provider | +Signature | +Deduplication | +Created | +
|---|---|---|---|---|
| {log.id} | +{demoMode ? redactPII(log.provider) : log.provider} | ++ + {log.signatureStatus} + + | ++ + {log.deduplication} + + | +{log.createdAt} | +
Access denied
+Contact a super admin if you need elevated access.
+PromptPay → USDT
+Admin sign-in
+Demo accounts
+404
+The route you requested does not exist.
+Overview
+Latest Transactions
+Auto-refreshing every 60 seconds
+{tx.reference}
+{tx.merchant}
++ {demoMode ? maskAmountTHB(tx.amountTHB) : `฿${tx.amountTHB.toLocaleString()}`} +
+{tx.status}
+Operational Alerts
+Requires attention
+Logs
+System actions
+482
+Admin actions
+182
+Failed jobs
+6
+Merchant
+Merchant profile
+PromptPay ID
++ {demoMode ? maskPhoneOrPromptpay(merchant.promptPayId) : merchant.promptPayId} +
+USDT Wallet
+{demoMode ? maskWallet(merchant.usdtWallet) : merchant.usdtWallet}
+API Key
+{demoMode ? maskApiKey(merchant.apiKey) : merchant.apiKey}
+Risk tier
+{merchant.riskTier}
+Settlement rules
+IP whitelist
+Recent transactions
+{tx.reference}
+{tx.createdAt}
++ {demoMode ? maskAmountTHB(tx.amountTHB) : `฿${tx.amountTHB.toLocaleString()}`} +
+{tx.status}
+Merchants
+Active merchants
+124
+Suspended
+6
+Risk reviews
+12
+Settings
+Environment info
+Rate limits
+Feature toggles
+Presentation controls
+Use demo data
+Force mock data for presentation-only environments.
+Global limits
+Daily volume cap
+฿200M
+USDT liquidity buffer
+8.5M
+Alert threshold
+75%
+Settlements
+Ready to settle
++ {demoMode ? maskAmountTHB(8_200_000) : '฿8.2M'} +
+Pending confirmations
+5
+Failed batches
+1
+Transactions
+Success rate
+98.3%
+Avg. settlement time
+14m
+Pending
+128
+Failed
+24
+Webhooks
+Incoming / hr
+1,280
+Signature failures
+4
+Deduped
+92
+