Inspiration
Live audience tools die the moment venue Wi-Fi or the SaaS provider does. Pear's runtime gave us an obvious answer: peers in the same room can talk directly. So we built the whole engagement stack with no server at all.
What it does
PearArena is a serverless, P2P live-engagement platform. Enter a room name, join the swarm, and play across three modes:
Q&A Wall — replicated questions + upvotes. PearQuiz — Kahoot-style trivia with countdown rings and time-weighted scoring. PearParty — Quiplash-style party game with prompt packs, hidden voting, and a winner reveal. The host's laptop runs a tiny HTTP server and prints a QR. Phones scan, get a mode-aware mobile UI, and become full game players — no app, no signup.
How we built it
Hypercore + Hyperswarm for replication; deterministic reducers per mode. Modes as plugins (validate / reduce / render), registered in a tiny mode registry. Vanilla JS frontend with a 500ms tick, conic-gradient timers, and a full-screen stage mode. In-process HTTP + SSE server bridges phones to the swarm; each phone tags actions with a stable mobileAuthor ID and shows up as a distinct player. Pear runtime + Electron for the host, with LAN-IP auto-detection for the QR. Challenges we ran into Giving phones distinct identities when all events flow through one writer core. The 500ms re-render kept stealing focus from textareas — fixed with a render diff and in-place DOM patches. Making a single HTML mobile page adapt to three modes with countdowns, locked-in states, and leaderboards. Naming — we rebranded twice before landing on something that read P2P without leaning on source-game brands. Accomplishments that we're proud of A truly serverless party-game stack that survives a router reboot mid-round. One QR scan turns any phone into a full player with its own score. A pluggable mode system: one mode → three with no refactor of the replication layer. A polished full-screen "stage" with animated reveals that feels like a live show. What we learned Reducer determinism is everything — touch Date.now() instead of ev.ts and peers diverge. "No cloud" doesn't mean "no UX work." Focus, scaling, and reveal pacing were the real wins. A tiny in-process HTTP server is surprisingly powerful glue between a P2P desktop app and any phone in the room.
What's next for PearArena
Cryptographically verifiable democratic voting mode. Prompt packs and rooms shareable as Pear links. A dedicated spectator / projector view. Persistent player identity across rooms. More modes: spectrum guessing, team play, live word clouds.
Built With
- brittle
- corestore
- css
- html
- hypercore
- hyperswarm
- javascript
- lan-web-ui
- pear-bridge
- pear-electron
- pear-interface
- pear-runtime
- protomux
- qrcode
Log in or sign up for Devpost to join the conversation.