Skip to main content

DegenFeed Architecture 🟒

DegenFeed is a protocol-agnostic social aggregator: one backend, many decentralized networks, one feed.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” poll/webhook β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Farcaster │◀──────────────────▢│ β”‚
β”‚ Nostr │◀──────────────────▢│ Ingestion Layer β”‚
β”‚ Bluesky │◀──────────────────▢│ (one adapter per β”‚
β”‚ Lens │◀──────────────────▢│ protocol) β”‚
β”‚ ATProto │◀──────────────────▢│ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ normalize
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Canonical Post Model β”‚
β”‚ author Β· body Β· refs β”‚
β”‚ network Β· ts Β· media β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚ β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Postgres β”‚ β”‚ Redis β”‚ β”‚ Meilisearch β”‚
β”‚ (persistent) β”‚ β”‚ (feed cache, β”‚ β”‚ (full-text β”‚
β”‚ β”‚ β”‚ rate limits) β”‚ β”‚ search index) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key design decisions​

  1. Adapters own protocol weirdness. Each network adapter translates to the canonical model at ingestion; downstream code never sees raw protocol envelopes.
  2. Fan-in, not fan-out. Posts are stored once, referenced by many feeds.
  3. Cross-posting is first-class β€” a single author action can publish to multiple networks through the canonical model (see Cross-Posting).
  4. Search is an index, not the source of truth. Meilisearch can be rebuilt from Postgres at any time.

Failure modes​

FailureBehavior
One network relay downAdapter backs off; other networks keep flowing
Redis downFeeds served from Postgres (slower, still correct)
Meilisearch downSearch disabled; feeds unaffected

Repo: git.rugmunch.io/RugMunchMedia/degenfeed-web