offline-first, p2p synced, atproto enabled, feed reader
TypeScript 97.2%
JavaScript 1.4%
CSS 1.0%
Nix 0.3%
HTML 0.1%
Shell 0.1%
Other 0.1%
34 1 0

Clone this repository

https://tangled.org/accidental.cc/feedline
git@tangled.org:accidental.cc/feedline

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Feedline#

easily self-hosted, local-first RSS reader and podcast client with p2p sync, and optional ATProto based social discovery.

  • subscriptions, read/play state and other actions sync between devices p2p
  • media can be downloaded with analysis for skipping silence, and shared via public or private torrent swarm
  • optional atproto integration allows easy on-boarding, and sharing subscriptions/favorites/etc through an open social network

development#

  • node.js 24+
  • npm or pnpm
npm install
npm run dev
# - frontend at `http://localhost:4000` (or configured port)
# - backend server at `http://localhost:4001`, `ws://localhost:4001/stream`

npm test
npm run types
npm run lint -- --fix

# production (heh)
npm run build
npm run start:prod

status: early#

the core realm protocol is working, but feed/podcast features are still being built. don't use this yet.

self-hosting#

feedline is designed to be self-hosted:

  1. hosted - run the web app from https://app.feedline.at, and we use the following:
  • CORS proxy
  • reader-mode proxy
  • audio file downloads for analysis (when not marked private)
  1. home server - run a local server for your devices (via Docker/Podman)
  • should support mdns, client connects, gets PWA, server does syncing
  • "discovery" and other social features would still come from upstream if that's desired

ATProto integration#

feedline integrates with ATProto for:

  • easy cross-device bootstrapping

    • if both devices are signed in through ATProto OAuth, we don't have to worry about invitation
  • social & discovery

    • sharing subscriptions means we can track common ones, trending, all that good stuff
    • sharing "shares" or "favorites" or whatever gives nice google-reader vibes
    • share to bluesky / some sort of native commenting or whatever would be easy/useful

ATProto should never be required - offline first with a self-hosted server for fetching should always work.

license#

AGPL