Hyperlocal P2P shop discovery. A shop broadcasts name, category, hours and promo. A traveler nearby sees that record. No accounts, no servers, no App Store.
Team: Zero-Knolage. Built from hello-pear-bare (main).
Two surfaces, one contract (scan() / beacon(), topic towerbell-discovery-v1):
| Surface | What it is | What judges should use |
|---|---|---|
| Pear CLI + 8-bit TUI | Real Hyperswarm. This is the track binary. | pear install below |
| Expo / React Native | Phone UI for the video. Same contract, mock swarm (Expo cannot load Hyperswarm). | http://localhost:8081 |
Keep this link seeded through judging:
pear install pear://xtj3nobayrtccxp68dnngayheeor3bc8kt8j4q19b3d5znrj1yqy
Then:
towerbell scan
towerbell beacon --name "Cafe del Puerto" --message "2x1 until 18h"
Two processes on one PC need different --storage dirs. This weekend the binary is Windows x64.
Someone on the team must keep this running:
pear seed pear://xtj3nobayrtccxp68dnngayheeor3bc8kt8j4q19b3d5znrj1yqy
Without a seeder, pear install cannot fetch the app. OTA: bump version in package.json, rebuild, pear stage the same link — see docs/RELEASES.md for the exact by-arch packaging steps, staging the repo root directly does not work. An installed copy logs [updater] updating → updated.
Judges / visitors: open the landing and click Try the demo → /demo/
(Expo web, mock swarm). Or run live Metro locally:
cd frontend
pnpm install
pnpm start -- --web --port 8081Rebuild the static demo into the landing:
cd frontend
pnpm run export:webShot list (~90 seconds):
- CHOOSE MODE → SCAN (traveler). Wait until Cafe Rivadavia / Farmacia Norte show on map, radar or list. Tap a shop.
- Header gear → Settings → SWITCH IDENTITY → Shop.
- BEACON: fill name / promo if needed → Start broadcasting until it says ON AIR. Open HITS.
- Optional: Settings → Reset to return to CHOOSE MODE.
Expo Go: same pnpm start in frontend/, scan the QR on a phone on the same Wi‑Fi.
This UI is a preview. The Pear-installed CLI is the P2P product.
pnpm install
pnpm run scan
pnpm run beacon -- --name "Cafe Nucleo" --message "Nucleus live test"--fake is mock data in one terminal. pnpm start uses --no-updates so a live release does not swap the binary while you iterate.
English deck (open in a browser) and speaking script:
- docs/pitch/index.html — 12 slides. Arrows / click.
n= notes.f= fullscreen. - docs/pitch/SCRIPT.md — ~3 minute talk track.
Paste this into the form field “Explain what you built and how it works” (headings + lists):
- docs/submit/what-we-built.txt — plain text for the Details field.
Version history and how to cut a GitHub Release (separate from Pear OTA):
Install for judges stays on Pear: pear install + keep pear seed running.