A UX translation layer for the Hyperstitions PAMM (Pot-split AMM) that solves the core user experience problems without changing the underlying smart contracts.
Solution: LateEntryBanner component
- Shows EARLY / MID / LATE phase indicators
- Explains pot-share dilution risk clearly
- Sets expectations before users commit
Solution: BuyPanelEnhanced component
- Shows effective price per share (all-in cost)
- Breaks down AMM cost vs pot contribution
- Displays estimated payout if you win
- Bridges Polymarket mental model
Solution: CoordinatorCTAStrip component
- Tweet/Quote templates for easy sharing
- Coordinator checklist (gamification)
- Social proof stats (coordinators, shares, mentions)
- Makes the "buy + bet + build" loop visible
| Component | Purpose |
|---|---|
MarketClarityHeader |
Market question, odds, pot, time, phase at a glance |
BuyPanelEnhanced |
All-in price, cost breakdown, payout preview |
LateEntryBanner |
Time-based risk warnings and phase indicators |
CrowdingMeter |
Shows which side is crowded (lower upside) |
UserPositionCard |
Your shares, pot share %, estimated payouts |
CoordinatorCTAStrip |
Actions to help coordinate the outcome |
House Style: Terminal-inspired + Sci-fi HUD + High-contrast Noir
- Primary accent:
#ff6b00(orange) - Secondary accent:
#00ff88(terminal green) - Background:
#0a0a0a(near black) - Typography: JetBrains Mono (mono) + Space Grotesk (display)
Effects:
- Scanline overlay (CRT feel)
- Grid background
- Neon glow on accents
- Smooth spring animations
# Install dependencies
npm install
# Start dev server
npm run dev
# Build for production
npm run build- Framework: React 18 + TypeScript
- Build: Vite
- Animations: Framer Motion
- Icons: Lucide React
- Web3: Viem (read-only contract calls)
The app reads from the deployed PAMM contract on Monad Testnet:
// Contract addresses
HST: 0x97401d48A80B15bC7291599e24B590Eedcd7cE37
PAMM: 0x97b4a6b501C55cCC7A597E259266E7E28A2d0BE0
ZAMM: 0xe5e5bE029793A4481287Be2BFc37e2D38316c422View functions used:
getMarket(marketId)- Market stategetPool(marketId)- Reserve balancesquoteBuyYes/No(marketId, amount)- Buy quotesbalanceOf(user, tokenId)- User positions
| Problem | Component | Key Feature |
|---|---|---|
| Late buyer confusion | LateEntryBanner | Phase indicators + risk warnings |
| $1/share preference | BuyPanelEnhanced | Effective price display |
| Free rider problem | CoordinatorCTAStrip | Tweet templates + checklist |
| "What do I own?" | UserPositionCard | Pot share % + payout scenarios |
| "Which side to pick?" | CrowdingMeter | Crowded side = lower upside |
The mechanism isn't broken. It's a hybrid AMM + pot system that needs a hybrid UX.
This layer translates "protocol language" into "user language" without changing the economics.
MIT