Feedline
Feedline is a single-user RSS aggregator. It pulls in your RSS and Atom feeds and presents them as one unified timeline, newest first, like a social media feed you actually control.
Why?
I wanted to follow blogs, newsletters, and release notes without bouncing between tabs or relying on a third-party service. Most feed readers are either over-engineered or abandoned. Feedline is just enough: one user, one timeline, self-hosted.
Features
- Aggregates RSS and Atom feeds into a single reverse-chronological timeline.
- Filter by All, Unread, or Favorites.
- Track read status and favorite individual items.
- Cursor-based pagination for stable "Load More" behavior.
- Light and dark themes with automatic switching.
- Manage feeds by editing a JSON file. No restart required.
- HTTP Basic Auth for access control.
- Docker-ready with persistent SQLite storage.
Stack
- Bun as the runtime.
- Hono for routing and middleware.
- SQLite via
bun:sqlitein WAL mode. - rss-parser for feed parsing.
- TypeScript on the server, vanilla JS on the client.
How it works
Feedline polls your feeds on a configurable interval (default 15 minutes), parses new items, and stores them in SQLite. The web UI is server-rendered HTML with minimal client-side JS for interactions like favoriting and marking items as read.
Feed configuration lives in a feeds.json file that gets picked up on the next poll cycle, so you can add or remove feeds without touching the server.
Caveats
Basic Auth sends credentials as base64-encoded text, so you'll want HTTPS via a reverse proxy in production. This is a single-user tool by design.