Skip to main content

Crate feedo

Crate feedo 

Source
Expand description

ยงFeedo ๐Ÿ•

A stunning terminal RSS reader built with Rust.

ยงOverview

Feedo is a modern, fast, and beautiful terminal-based RSS/Atom feed reader. It provides a three-panel interface inspired by desktop readers like Reeder, but designed for the command line.

ยงArchitecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          App                                โ”‚
โ”‚  Orchestrates all components and runs the main event loop   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ–ผ                   โ–ผ                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     Config      โ”‚ โ”‚  FeedManager    โ”‚ โ”‚       UI        โ”‚
โ”‚                 โ”‚ โ”‚                 โ”‚ โ”‚                 โ”‚
โ”‚ โ€ข Load/Save     โ”‚ โ”‚ โ€ข Fetch feeds   โ”‚ โ”‚ โ€ข Render panels โ”‚
โ”‚ โ€ข Folders       โ”‚ โ”‚ โ€ข Parse RSS     โ”‚ โ”‚ โ€ข Handle input  โ”‚
โ”‚ โ€ข Theme         โ”‚ โ”‚ โ€ข Track state   โ”‚ โ”‚ โ€ข Search        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                   โ”‚                   โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ”‚
                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                   โ”‚      OPML       โ”‚
                   โ”‚                 โ”‚
                   โ”‚ โ€ข Import feeds  โ”‚
                   โ”‚ โ€ข Export feeds  โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ยงModules

  • app โ€” Main application state and event loop
  • config โ€” Configuration management and persistence
  • feed โ€” Feed fetching, parsing, and state management
  • opml โ€” OPML import/export for feed migration
  • sync โ€” Sync with FreshRSS, Miniflux via Google Reader API
  • theme โ€” UI theming with 15 popular color schemes
  • ui โ€” Terminal UI rendering and input handling

ยงExample

use feedo::App;

#[tokio::main]
async fn main() -> color_eyre::Result<()> {
    let mut app = App::new().await?;
    app.run().await
}

ยงFeatures

  • Beautiful TUI โ€” Clean three-panel interface with ratatui
  • Folder Organization โ€” Group feeds with custom emoji icons
  • Instant Search โ€” Find articles across all feeds
  • 15 Themes โ€” Dracula, Nord, Catppuccin, Gruvbox, Tokyo Night, and more
  • OPML Support โ€” Import/export for easy migration
  • Social Sharing โ€” Share articles to X, Mastodon, and Bluesky
  • Async โ€” Non-blocking feed fetching with Tokio
  • Cross-Platform โ€” Works on Linux, macOS, and Windows

Re-exportsยง

pub use app::App;
pub use config::Config;
pub use error_report::REPO_URL;
pub use error_report::VERSION;
pub use error_report::create_issue_url;
pub use error_report::open_issue;
pub use feed::CacheStats;
pub use feed::CachedFeed;
pub use feed::CachedItem;
pub use feed::DiscoveredFeed;
pub use feed::Feed;
pub use feed::FeedCache;
pub use feed::FeedDiscovery;
pub use feed::FeedItem;
pub use feed::FeedManager;
pub use feed::FeedType;
pub use sync::GReaderClient;
pub use sync::SyncConfig;
pub use sync::SyncManager;
pub use sync::SyncProvider;
pub use sync::SyncResult;
pub use theme::Theme;
pub use theme::ThemeName;
pub use theme::ThemePalette;
pub use update::PackageManager;
pub use update::VersionCheck;
pub use update::check_for_updates;
pub use update::check_for_updates_timeout;
pub use update::detect_package_manager;
pub use update::run_update;

Modulesยง

app
Main application module.
config
Configuration management.
credentials
Secure credential storage using AES-256-GCM encryption.
error_report
Error reporting utilities.
feed
Feed management and fetching.
opml
OPML import and export.
sync
Sync support for external RSS services.
theme
Theme configuration and colors.
ui
Terminal UI components.
update
Update checking and self-update functionality.