How clip-rss/clip works
Clip is a cross-platform desktop RSS reader. The main workflow is subscribing to feeds, fetching and parsing RSS/Atom in the background, storing articles locally, then browsing, searching, and reading them in the desktop UI. Separate capabilities cover OPML import/export and manual WebDAV backups, full-text extraction, media proxying, notifications, and settings. The graph uses README feature descriptions and sampled entry-point/source evidence; several internal service-to-service links are omitted where implementation excerpts were unavailable.
Main entry points: api.go Bound API · fetcher.go Feed fetcher · store.go SQLite store · scheduler.go Refresh scheduler
Components 21
Desktop interface
- Reader interface
frontend/src/App.tsx - Reading state
frontend/src/Stores/ArticleStore.ts
Application services
- Bound API
api/api.go - Refresh scheduler
internal/scheduler/scheduler.go - Full-text reader
internal/reader/reader.go - OPML exchange
internal/opml/opml.go - OPML backup manager
internal/opmlbackup/manager.go - WebDAV services
api/webdav_vault.go - Settings service
api/settings.go
Feed ingestion
- Feed fetcher
internal/fetcher/fetcher.go - RSS Atom parser
internal/fetcher/parser.go
Local data
- SQLite store
internal/store/store.go - Article operations
internal/store/items.go - Feed operations
internal/store/feeds.go - Article search
internal/store/items.go
External integrations
- WebDAV client
internal/webdav/client.go - Media proxy
internal/mediaproxy/mediaproxy.go - Desktop notifications
internal/notify/notify.go
Other components
- Reader
- Feed websites
- WebDAV server
Connections 25
- Reader → Reader interface: uses
- Reader interface → Reading state: updates
- Reader interface → Bound API: invokes
- Bound API → Article operations: queries and changes
- Bound API → Feed operations: manages subscriptions
- Bound API → Settings service: reads and saves
- Refresh scheduler → Feed fetcher: requests refresh
- Feed fetcher → Feed websites: fetches feeds
- Feed fetcher → RSS Atom parser: parses responses
- RSS Atom parser → Feed operations: provides feed data
- Refresh scheduler → SQLite store: refreshes articles
- Article operations → SQLite store: reads and writes
- Feed operations → SQLite store: reads and writes
- Article search → SQLite store: searches articles
- Bound API → Article search: searches
- Bound API → Full-text reader: extracts full text
- Full-text reader → Feed fetcher: fetches source
- Bound API → OPML exchange: imports and exports
- Bound API → OPML backup manager: manages backups
- OPML backup manager → WebDAV client: transfers snapshots
- WebDAV services → WebDAV client: syncs configuration
- WebDAV client → WebDAV server: reads and writes
- Bound API → Media proxy: serves media
- Media proxy → Feed websites: requests media
- Refresh scheduler → Desktop notifications: dispatches alerts