Vote¶
recorded · changeable · per-device
Voting is free, anonymous, and recorded. Every page on this site carries an agree / skip / disagree widget at the bottom — that's the whole interaction. Your votes live in your browser's localStorage. Nothing is sent anywhere unless you explicitly publish a vote as a GitHub issue from the widget itself.
How it works¶
- Click agree / skip / disagree on any page that has a vote widget.
- The vote is recorded locally under
localStorage["godding.vote.trail"], with a UTC timestamp. You can see it below. - Change your mind any time — re-voting overwrites the previous answer and the change is logged as a separate trail entry.
- Optionally publish by clicking react publicly on github on the widget. That opens a pre-filled GitHub issue you can post or discard.
- Public tallies are computed by a swarm tool from those issues and
served as
data/votes.json. The same widget reads them and displays the running counts inline.
Recording rules — the contract¶
- Every vote you cast is logged with a UTC timestamp the moment you click.
- Flips, removes, and retries are each their own entry. The trail is append-only.
- Nothing leaves your device until you choose to publish. Nothing is silently overwritten on the server side.
- Clearing localStorage clears your trail. The site has no other record.
Your trail¶
No votes yet on this device. Open any page on the site, scroll to the bottom, and try the widget.
What gets stored, exactly¶
Open the browser devtools, go to Application → Local Storage, and look for
keys prefixed godding.. The honest list:
| Key | What's in it |
|---|---|
godding.vote.trail |
Append-only array of { ts, page, dir } entries. |
godding.identity |
Optional sign-in payload (see account). Only set if you actually sign in. |
Nothing else. No cookies. No third-party trackers. No fingerprinting. The
JavaScript that reads/writes these keys is in
assets/vote-box.js and assets/auth.js
— readable static files served from this domain.
Federation roadmap¶
The current setup is per-device: vote on your phone and your laptop and they
don't know about each other. The planned extension turns each publish click
into a small GitHub issue that the swarm aggregates back into
data/votes.json — so the public tally crosses devices while the device-local
trail stays private. Track progress in tasks/FRONTIER.md.