A Bluesky film club for public-domain cinema. Free, ad-free, and fully portable β your film diary, ratings, and reviews live in your own AT Protocol repo, not ours.
Watch classic public-domain films, log them to your Bluesky identity, host live watch parties, and climb a community leaderboard. No paywalls, no tracking, no separate account.
Live at blueboxd.com.
Blueboxd is a single Cloudflare Worker that powers an entire Letterboxd-style film club on top of Bluesky and the AT Protocol. Films stream directly from the Internet Archive β Blueboxd hosts no video and controls no content.
The twist: there is no Blueboxd database for your data. Your diary entries, ratings, reviews, and watchlist are written as records into your own atproto repo via OAuth. Delete your account on Blueboxd and you keep everything β it's yours, portable, forever.
- π¬ Public-domain catalogue β thousands of vintage films (noir, sci-fi, horror, westerns, musicalsβ¦) verified against a real film database and streamed legally from archive.org.
- π atproto-native diary β ratings, reviews, watchlist, and "in library" all saved to your Bluesky repo via OAuth. No password ever touches Blueboxd.
- π Live watch parties β scheduled group screenings with a countdown hero, RSVP, a synced player that unlocks at showtime, and live reactions mirrored from the Bluesky thread.
- π Leaderboard β weekly community ranking by films watched, with snapshots.
- π¦ Shareable cards β every diary, stats, party, and leaderboard view generates a clickable Bluesky link-preview card that drives fans back into the room.
- π€ Person pages β browse by star or director with full, de-duplicated filmographies.
βββββββββββββββββββββββββββββββ
blueboxd.com ββββΆβ Cloudflare Worker β
β (this repo β worker.js) β
βββββββββββββββββββββββββββββββ€
archive.org βββββ€ β’ catalogue + streaming β
(films) β β’ watch parties + rooms β
β β’ leaderboard + snapshots β
Bluesky / βββββ€ β’ share-card rendering β
AT Protocol β β’ OAuth β user's own repo ββββΆ your atproto repo
(your diary) βββββββββββββββββββββββββββββββ (diary, ratings, reviews)
β
KV Β· D1 (social index)
Everything runs at the edge in one Worker. State lives in Cloudflare KV (caches, sessions) and D1 (the social/watch index) β never the user's film data, which is atproto-only.
You'll need a Cloudflare account, a Bluesky account to act as the host, and Node.
- Bind a KV namespace, a D1 database, and your secrets/vars:
OWNER_DID_ENVβ the DID of your host/owner Bluesky account- OAuth client config + a host app-password (as Worker secrets, never hardcoded)
- Set
OWNER_DID/HOST_HANDLEinworker.js(or via the env var) to your account. - Deploy
worker.jsto your Worker and point your domain at it. - The
.mjshelpers post the scheduled cadence cards (Saturday party, weekly leaderboard, diary share).
Security note: all tokens, app-passwords, and OAuth secrets are read from Worker secret bindings. There are no secrets in this source, and there never should be β see SECURITY.md.
MIT Β© indicaindependent
Part of the Indica Independent stack. Public-domain cinema, streamed free & legal.