FeedDeck

A TweetDeck-inspired open-source feed reader that unifies RSS, YouTube, GitHub, podcasts, Reddit, Mastodon, and more into a single cross-platform dashboard.

308stars
16forks
MIT License
TypeScript

FeedDeck is an open-source, cross-platform feed aggregator inspired by TweetDeck, built for developers, journalists, and power users who need to stay on top of multiple information streams at once. Rather than juggling separate apps for RSS, YouTube, GitHub notifications, podcasts, and social media, FeedDeck consolidates everything into a familiar multi-column deck interface — letting you arrange sources exactly the way you want them.

The app is built with Flutter, which means a single codebase delivers a consistent experience across iOS, Android, macOS, Windows, Linux, and the web. The backend is powered by Deno edge functions and Supabase, handling authentication, real-time data sync, and media storage across all your devices. This architecture also makes self-hosting viable for users who want full control over their data.

FeedDeck supports an impressive breadth of sources: RSS and Atom feeds, Google News, GitHub notifications and repository activity, YouTube channels, Medium, Reddit, Tumblr, Mastodon, Lemmy, Pinterest, 4chan, StackOverflow, and podcast feeds with a built-in audio player. The smart RSS router automatically detects when a pasted URL belongs to a supported platform and routes it to the correct specialized handler.

For hosted users, FeedDeck offers free and premium tiers, with the premium tier removing source limits. For teams or privacy-focused users, the self-hosting path is fully documented — you deploy your own Supabase instance, run the database migrations, and configure the Deno edge functions, gaining complete ownership of your data.

What You Get

  • TweetDeck-style Multi-Column Deck - Organize all your feeds into named columns, each containing one or more sources, so you can scan GitHub notifications, RSS headlines, and YouTube uploads side by side in a single view.
  • 14 Supported Source Types - Follow RSS/Atom, Google News, GitHub notifications and repository activity, YouTube channels, Medium, Reddit, Tumblr, Mastodon, Lemmy, Pinterest, 4chan, StackOverflow, and podcast feeds — all from one app.
  • Built-in Podcast Player - Stream podcast episodes directly inside FeedDeck with background audio playback support on iOS, Android, and macOS, without switching to a separate app.
  • Smart URL Detection - Paste any URL into the RSS source field and FeedDeck automatically detects if it belongs to YouTube, Reddit, Medium, Tumblr, Pinterest, Lemmy, or 4chan and routes it to the correct specialized handler.
  • GitHub Activity Monitoring - Connect your GitHub account via OAuth to receive personal notifications, repository-specific notifications, and activity feeds for stars, forks, and issues.
  • Cross-Platform Sync via Supabase - Your decks, columns, and sources sync in real time across iOS, Android, macOS, Windows, Linux, and web through a shared Supabase backend with authenticated user sessions.
  • Self-Hosting Support - Full instructions are provided to deploy your own Supabase instance, run database migrations, and configure Deno edge functions for complete data ownership.

Common Use Cases

  • Developer information dashboard - A software engineer adds GitHub notifications, Hacker News RSS, specific StackOverflow tags, and YouTube channels for conference talks into a single deck to monitor everything relevant without context-switching.
  • Journalist source monitoring - A reporter follows Medium publications, Reddit subreddits, Google News topics, and podcast feeds from industry experts in parallel columns, scanning for breaking stories across all channels at once.
  • Decentralized social media reader - A Mastodon and Lemmy user combines their federated social feeds with RSS blogs and YouTube channels into one view, replacing multiple apps with a single consistent interface.
  • Privacy-first self-hosted feed reader - A privacy-conscious team deploys FeedDeck on their own Supabase instance, keeping all feed data, credentials, and usage analytics entirely within their own infrastructure.
  • Podcast discovery and listening - A user follows dozens of technology podcasts alongside their blog RSS feeds, listening to episodes through the built-in player while reviewing article titles in adjacent columns.

Under The Hood

Architecture FeedDeck uses a clearly separated two-layer architecture: a Flutter frontend that handles all UI, state management, and platform-specific concerns, and a Deno-based serverless backend deployed as Supabase Edge Functions. On the client side, the Provider pattern manages application state through distinct repositories — AppRepository orchestrates deck and column state, ProfileRepository manages user accounts, and ItemsRepository handles feed item pagination. Domain models like FDDeck, FDColumn, FDSource, and FDItem form the typed data layer shared across all platform targets. The backend is a set of purpose-built edge functions — add-or-update-source, image-proxy, profile management, and the central scheduler and worker — each deployed independently to Supabase, keeping concerns cleanly isolated and enabling incremental updates without re-deploying the whole backend.

Tech Stack The Flutter application is written in Dart targeting Flutter 3.29+ and uses Provider for reactive state management, supabase_flutter for authentication and real-time database access, just_audio and media_kit for cross-platform audio and video playback, and xml for client-side feed parsing. The backend edge functions are written in TypeScript running on Deno, using the Deno RSS library for Atom/RSS parsing, cheerio for HTML scraping, and the Supabase JS client for database interaction. Redis is optionally supported for feed caching. The landing page is a separate Next.js application with Tailwind CSS. Supabase provides PostgreSQL, authentication, storage, and real-time subscriptions. Distribution targets include the App Store, Google Play, Mac App Store, Windows Store, Flathub, and web.

Code Quality The Deno backend has comprehensive test coverage: every major feed source — RSS, YouTube, Reddit, Mastodon, Lemmy, Pinterest, Medium, Tumblr, Podcast, StackOverflow, Google News, 4chan, Nitter, and GitHub — has a dedicated test file using Deno’s standard testing mock utilities with stub-based HTTP interception. Tests assert both source properties and item field correctness against captured real-world responses. The Flutter side has limited automated test coverage with only a handful of widget tests present, though the Dart models are strongly typed with explicit null handling and JSON serialization throughout. Both codebases enforce consistent formatting — deno fmt for TypeScript and flutter_lints for Dart. Error handling in edge functions is generally explicit, with FeedValidationError thrown for invalid inputs and graceful fallbacks when feed detection fails.

What Makes It Unique FeedDeck’s most distinctive technical contribution is its intelligent RSS URL router: when a user pastes any URL as an RSS source, the backend checks it against known URL patterns for YouTube, Reddit, Medium, Tumblr, Pinterest, Lemmy, and 4chan, and transparently delegates to specialized parsers that handle platform-specific API quirks, pagination, and media extraction — no separate source type selection required. The system also supports Piped as an alternative YouTube frontend for privacy-aware routing. Another standout is the unified client-side scraping fallback: when a direct RSS fetch fails, the backend uses cheerio to scrape the HTML page and locate the embedded feed link, substantially improving compatibility with sites that don’t advertise their feed URLs directly. Together these features make FeedDeck meaningfully more capable than generic RSS readers for users following social and video platforms.

Self-Hosting

FeedDeck is licensed under the MIT License, which is one of the most permissive open-source licenses available. You are free to use it commercially, modify the source code, distribute it, and incorporate it into proprietary products without any obligation to open-source your changes. There are no copyleft implications — the only requirement is that the original copyright notice is retained in copies or substantial portions of the software.

Running FeedDeck yourself requires operating a Supabase instance, which itself can be self-hosted or used via Supabase Cloud. You will need to run PostgreSQL database migrations, configure authentication providers (email, Apple, and GitHub OAuth), deploy roughly a dozen Deno edge functions, set up a cron scheduler for background feed fetching, and manage Supabase Storage for media proxy caching. This is a moderate operational burden — not complex enough to require dedicated infrastructure engineering, but more involved than deploying a single-binary application. You are responsible for uptime, backup of the PostgreSQL database, scaling the edge functions if usage grows, and keeping the Flutter clients updated when backend changes are released.

The hosted version at feeddeck.app offers a free tier with a limit of 10 sources and a premium tier with up to 1,000 sources, available via Stripe on web and RevenueCat on mobile. Self-hosters bypass these limits entirely by controlling their own backend, but they give up the managed update experience, hosted support channels, and any future infrastructure improvements made to the cloud offering. There is no enterprise SLA or dedicated support tier; the project is maintained by a solo developer and relies on GitHub Issues and Discussions for community support.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack

No spam. Unsubscribe anytime.

Join 750+ subscribers
No spam. Unsubscribe anytime.

Search