Clutch is a livestreaming app where the audience sets the stakes. Viewers challenge the streamer with dares and bet STRK on whether they’ll pull it off or not. The streamer picks a dare, gets one shot to complete it in five minutes, and everyone watches. When time’s up, the result is settled and winners get paid. It turns watching into a game: you’re not just viewing—you’re proposing, betting, and cheering. Whether the streamer nails it or chokes, the outcome is shared and paid out on-chain, so the tension and the payoff are real.
- Watch — Join a live stream and see the streamer and the current dare.
- Propose a dare — Suggest a challenge and stake STRK on it. You pick whether you think they’ll do it (YES) or not (NO).
- Stake on others’ dares — While a dare is still Proposed, you can add your own STRK on YES or NO. Once the streamer accepts a dare, staking closes.
- Watch the attempt — The streamer has 5 minutes to complete the dare. A timer is shown on stream.
- Settle & win — After the timer ends, the result is verified and settled on-chain. If you bet on the winning side, you can claim your winnings (or get a refund if the dare was cancelled).
- Go live — Connect your wallet, start your stream, and share the link with viewers.
- See dares — Viewers propose dares and stake STRK. Dares are listed by total stake.
- Accept or reject — You can accept one dare (it must have stake on both YES and NO) or reject it. Only one active dare per stream at a time.
- Attempt — Once you accept, you have 5 minutes to complete the dare on stream. Everyone watches.
- Verification — When time’s up, the app captures frames from your stream. An AI judge checks whether you completed the dare; the result is settled on-chain and payouts (or refunds) are enabled.
clutch/
├── frontend/ # Next.js app (streaming UI, wallet, dares, chat)
├── server/ # Express API + WebSocket (streaming, verification queue, cron)
├── contracts/ # Starknet (Cairo) — dares, stakes, settle, refunds
└── README.md
Build and test the Cairo contracts:
cd contracts
scarb build
scarb testDeploy to Starknet (e.g. Sepolia) and set the contract address in the frontend and server env.
Node.js + Express, WebSockets, Redis (BullMQ), Prisma, Anthropic (verification).
cd server
cp .env.example .env # then fill in keys (REDIS_URL, ANTHROPIC_API_KEY, settler keys, etc.)
npm install
npx prisma generate
npx prisma db push # or migrate, for DB
npm run devRuns by default on http://localhost:4000. Frontend and WebSocket clients connect here.
Next.js app for going live, watching streams, proposing/staking on dares, and claiming.
cd frontend
cp .env.example .env # set NEXT_PUBLIC_WS_URL, NEXT_PUBLIC_API_URL, NEXT_PUBLIC_CONTRACT_ADDRESS, etc.
npm install
npm run devRuns on http://localhost:3000. Connect a Starknet wallet (e.g. Cartridge) to use the app.
- Staking is only open while a dare is Proposed. Once the streamer accepts, no new stakes are allowed.
- Verification uses the backend to capture stream frames and call an AI judge; the settler account then calls
settle_dareon-chain. - Stale dares (proposed or accepted for too long without settlement) can be cancelled by a cron job so stakers can claim refunds.