Flutter Web App
The Arenaton Flutter app is the user-facing terminal for market discovery, Market Briefs, paper rehearsal, wallet intelligence, and optional execution workflows. It should present the same Market, Outcome Share, Collateral, account, source, credit, and safety language as the public docs.
Current App Responsibilities
Section titled “Current App Responsibilities”| Area | Responsibility |
|---|---|
| Market browse | Show external and Arenaton Markets with clear provider and environment labeling. |
| Market detail | Show rules, source context, order book, trades, and Live State Version where present. |
| Market Briefs | Render previews, full brief fields, sources, freshness states, and credit gates. |
| Paper Rehearsal | Use ppUSD/PaperUSDC for simulated orders, review, PnL, and decision memory. |
| Wallet Radar | Show public wallet activity with freshness labels and private user tags. |
| Order entry | Sign EIP-712 orders with Smart Account or Raw EOA Mode where execution is enabled. |
| Portfolio | Show confirmed positions, pending fills, fills, orders, and redeemable Markets. |
| Wallet/account | Support user-controlled accounts and explicit signing modes. |
| Localization | Use reviewed locale files for supported languages. |
Public App Surfaces
Section titled “Public App Surfaces”| Environment | Chain | Public host | Registry config |
|---|---|---|---|
paper | Polygon Amoy 80002 | https://paper.arenaton.com | Configured target route: /api/paper/contract-registry. |
production | Polygon PoS 137 | https://app.arenaton.com | Configured target route: /api/contract-registry. |
Production builds must refuse Amoy signing. Paper builds must refuse Polygon mainnet signing.
Those registry URLs are client configuration targets. The current pulse server does not expose public registry routes yet; alpha and paper flows should rely on the implemented API responses or bundled environment config until registry HTTP routes ship.
Paper Trading Data Flow
Section titled “Paper Trading Data Flow”Flutter paper app -> GET /api/paper/markets -> POST /api/paper/faucet/claim -> sign EIP-712 ArenatonOrder -> POST /api/paper/orders -> WS /api/paper/ws -> portfolio and redemption viewsExpected paper WebSocket event families:
paper_market_bookpaper_matched_pending_fillpaper_settlement_confirmedpaper_account_positionspaper_market_lifecyclepaper_redemption_confirmedpaper_market_live_statepaper_statusFor Market Brief field contracts and freshness behavior, read Market Briefs.
Signing
Section titled “Signing”Flutter order signing must stay byte-compatible with Go validation and settlement-contract verification.
Read EIP-712 Order Format for the typed data fields. The app should always populate:
- chain ID from the selected environment config or registry,
- verifying contract from the selected environment config or registry,
- collateral token from the Market,
- current Live State Version from the Market detail response,
- account mode as Smart Account or Raw EOA Mode.
UI Safety Requirements
Section titled “UI Safety Requirements”- Show the selected environment in paper builds.
- Never label ppUSD/PaperUSDC as real USDC.
- Show pending fills separately from confirmed Outcome Shares.
- Show redeemable Markets only after final resolution.
- Preserve direct redemption paths where rules permit.
- Keep risk copy visible: prediction markets involve risk of loss and may not be available everywhere.
- Keep Market Brief copy observational: no buy/sell instructions, no expected returns, no confidence scores, and no guaranteed edge.
Localization
Section titled “Localization”New copy should go through Flutter localization files instead of hard-coded English strings. Public landing routes currently prioritize English, Spanish, Portuguese, French, German, Italian, Dutch, Japanese, Korean, Simplified Chinese, Arabic, and Hindi. App locale coverage may be broader, but user-facing terminal copy should stay reviewed rather than copied from English.