- Svelte 28%
- Zig 23%
- Python 22%
- TypeScript 15%
- JavaScript 10%
- 2 more languages 2%
pollz #
polls on AT Protocol: create a poll, vote, and watch the
results. polls and votes are records in each user's own repo, under the
tech.waow.pollz.poll and
tech.waow.pollz.vote lexicons. the
browser signs in with OAuth and writes them straight to the user's PDS. a
collector follows Jetstream for
those two collections and feeds a zeldi
cell per poll, whose state lives in R2, and a read-only api serves the index.
live: pollz.waow.tech, reading from api.pollz.waow.tech
develop #
needs zig 0.17, node 22 with pnpm, and uv.
just test # frontend, cells, collector and seed tests
cd frontend && pnpm dev --host 127.0.0.1 # the site; VITE_API_URL names an AppView that allows its origin
just test runs the cells against a real zeldi on a recorded fixture. the
collector only subscribes to the live firehose on a Fly machine; run nothing
against it from a laptop.
deploy #
just deploy-frontend # cloudflare pages
the AppView runs on cellar, one Fly machine shared with other apps, which builds pollz's cells and collector from the commit it pins. to ship a change here, bump that pin and deploy cellar.
docs #
docs/ holds the deeper notes: how ingestion and browser writes work, what the deployed path measures, and what pollz used to run.