An atproto-powered request-for-discussion (RFD) platform. A thin, single-tenant, self-hostable client over tangled's bobbin appview — no custom indexing infrastructure required.
- Proposals are numbered Markdown files (
NNNN-slug.md) in a tangled git repo namedrfd. - Discussion happens through tangled pulls, issues, and comments.
- This app reads everything from a bobbin appview (default:
https://api.tangled.org) and writes go browser-side directly to the author's PDS via OAuth.
packages/core(@rfd/core) — headless, transport-agnostic library over bobbin.packages/www— Astro (Node) server that renders one owner'srfdrepo.
The app is single-tenant: one instance serves one owner's rfd repo.
docker run -p 4321:4321 -e RFD_OWNER=you.example.com natemoo-re/rfdDeploy this repo; Railway builds the Dockerfile and injects PORT. Set RFD_OWNER
(and any optional vars below) in the service settings.
| Var | Default | Purpose |
|---|---|---|
RFD_OWNER |
— (required) | Handle or DID of the repo owner |
RFD_REPO_NAME |
rfd |
Canonical repo name to serve |
BOBBIN_URL |
https://api.tangled.org |
Comma-separated, preference-ordered bobbin pool |
RFD_CACHE_TTL |
60 |
Seconds to cache known-content responses |
PUBLIC_ORIGIN |
request-derived | Origin for OAuth client metadata |
PORT |
host-provided | HTTP listen port |
pnpm install
RFD_OWNER=you.example.com pnpm --filter www dev
pnpm --filter @rfd/core test