A lean, fast frontend for poidh (pics or it didn't happen) bounties, also a Farcaster mini app
https://poidh.borodutch.com
- JavaScript 60.1%
- CSS 21%
- TypeScript 15.1%
- HTML 3.7%
- Dockerfile 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- main's top padding was overridden by .wrap on every page; fixed - leaderboard: podium for the top three, rows with per-chain scores and a bar scaled to the leader, your rank pinned, numbered pages - phones: bottom tab bar (bounties, activity, create, top, you), sticky submit-a-claim bar once the panel's button scrolls away, roomier spacing - hero actions + how-it-works sheet, winner thumbnails on past bounties - hydrated avatars keep their size class Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| public | ||
| vendor | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| lib.test.js | ||
| LICENSE | ||
| README.md | ||
| server.ts | ||
poidh
A lean frontend for poidh (pics or it didn't happen), live at https://poidh.borodutch.com. It uses the same contracts and the same bounties, and reads its data from poidh.xyz's API.
- No build step and no npm dependencies: plain ES modules in
public/and one Bun server,server.ts. server.tsserves the static files (brotli/gzip compressed once at startup) and proxies/api/*to poidh.xyz, which sends no CORS headers. Public queries are cached for 15 s and served stale while they refresh. Bounty pages get per-bounty OG and Farcaster embed tags for link previews./resolveturns a claim's URI (metadata JSON, an image or a video) into its media. Results are kept inDATA_DIR/media.jsonl./thumbmakes small webp thumbnails with libvips and caches them inDATA_DIR/thumbs./uploadstores claim photos and videos by content hash inDATA_DIR/uploads; they are served from/u/<sha256>.<ext>.- zkPassport badges:
vendor/build.shbundles the pinned SDK intopublic/vendor/(loaded only when someone verifies; Barretenberg left out because poidh verifies proofs server-side). - Wallets are found through EIP-6963. Inside a Farcaster client the app is a mini app (
public/miniapp.js, which talks the host protocol without the SDK) and uses the client's wallet. The manifest is at/.well-known/farcaster.json.
Tests: bun test (needs nothing installed).
Run locally:
bun server.ts # http://localhost:3000
Environment variables:
PORT(default 3000)DATA_DIR(default./data)PUBLIC_URL: the public origin when the app runs behind a TLS proxyUPSTREAM(default https://poidh.xyz)FARCASTER_ACCOUNT_ASSOCIATION: the signed{header, payload, signature}JSON for the mini app manifest
MIT, like the original poidh-app.