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
  • ui โ€” Terminal UI rendering and input handling

Theme support is provided by the ratatui_themes crate.

ยง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 update::PackageManager;
pub use update::VersionCheck;
pub use update::check_for_updates;
pub use update::check_for_updates_crates_io;
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.
ui
Terminal UI components.
update
Update checking and self-update functionality.

Structsยง

Theme
A theme configuration wrapper providing convenient access to theme colors.
ThemePalette
A semantic color palette for a theme.

Enumsยง

ThemeName
Enumeration of all available color themes.