$ show ViennaRSS/vienna-rss
Vienna is a mature, macOS-native RSS/Atom/JSON feed reader that operates as a traditional desktop application. In production, it periodically fetches subscribed feeds via HTTP, parses them into structured articles (RSS, Atom, JSON Feed), stores articles and folder metadata in a local SQLite database (via FMDB), and presents them through a Cocoa/AppKit interface with a folder tree, article list, and built-in WebKit-based browser for reading. It supports smart folders, OPML import/export, and synchronization with Open Reader-compatible services (BazQux, FeedHQ, InoReader, TheOldReader). The application also provides a plugin system for extending feed sources, sharing, search, and actions, and uses Sparkle for automatic updates. The architecture follows a classic MVC pattern with a heavy reliance on notifications and the singleton pattern for the database and preferences. Key entry points include `AppController` (application delegate), `ArticleController` (article list management), `FoldersTree` (folder outline), `RefreshManager` (feed fetching), and `Database` (persistence). External dependencies include FMDB, MMTabBarView, TRVSURLSessionOperation, and Sparkle, all managed via Swift Package Manager or manual vendoring. The codebase is a mix of Objective-C and Swift, with some deprecated API usage and private WebKit hooks, but is actively maintained with a comprehensive test suite and CI pipeline.
The LLM identified 5 files worth highlighting for reuse:
A generic FSEvents-based directory monitor that notifies a delegate of filesystem changes. It is self-contained, uses modern Swift concurrency (DispatchQueue), and handles errors gracefully. It could be extracted into a standalone library for monitoring any directory in a macOS app.
A reusable subclass of WKWebView that adds text zoom, custom context menus, printing support, hover styling, and full-screen video handling. It encapsulates non-obvious WebKit private API usage and provides a clean interface. Suitable for any macOS app needing a customizable web view.
A fixed-size circular buffer for tracking backward/forward navigation history. It is implemented as a simple Objective-C class with a clear API (push, back, forward, clear). The pattern is general-purpose and could be reused in any application needing a bounded navigation history.
A thin wrapper that adapts NSURLSessionDataTask into an NSOperation, enabling dependency management and cancellation. It is self-contained, well-documented, and demonstrates a clean pattern for integrating async network requests into operation queues. Could be reused in any Objective-C project.
A lightweight NSView subclass that animates its height constraint to show/hide content with a disclosure triangle. It is implemented with Auto Layout, supports custom animations, and is decoupled from any specific business logic. Reusable in any macOS app that needs collapsible sections.