Skip to content

Repository files navigation

rfd

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.

How it works

  • Proposals are numbered Markdown files (NNNN-slug.md) in a tangled git repo named rfd.
  • 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

  • packages/core (@rfd/core) — headless, transport-agnostic library over bobbin.
  • packages/www — Astro (Node) server that renders one owner's rfd repo.

Self-hosting

The app is single-tenant: one instance serves one owner's rfd repo.

Docker

docker run -p 4321:4321 -e RFD_OWNER=you.example.com natemoo-re/rfd

Railway

Deploy this repo; Railway builds the Dockerfile and injects PORT. Set RFD_OWNER (and any optional vars below) in the service settings.

Configuration

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

Development

pnpm install
RFD_OWNER=you.example.com pnpm --filter www dev
pnpm --filter @rfd/core test

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages