How ituff/cfrss works
CFRSS is a self-hosted, single-user RSS reader: the reader manages subscriptions, retrieves and reads articles, and can use AI, speech, bookmarks, and a daily digest. Feed refresh runs both on demand and on a schedule; article metadata is stored in Cloudflare D1, while full text can be archived in the user’s GitHub repository. The graph follows documented capabilities and sampled routing/service calls; several handler-to-service links are omitted where their wiring was not shown.
Main entry points: index.ts HTTP routing · llm.ts AI handlers · feed-refresh.ts Feed refresh · api.ts API client
Components 26
Reader app
- App bootstrap
src/client/main.ts - Reading views
src/client/components/main-view.ts - Subscription views
src/client/components/subscription/index.ts - AI features
src/client/components/llm/index.ts - API client
src/client/services/api.ts - Offline service worker
public/sw.js
Worker API
- HTTP routing
src/index.ts - Article handlers
src/handlers/articles.ts - Subscription handlers
src/handlers/subscriptions.ts - OPML handlers
src/handlers/opml.ts - Bookmark handlers
src/handlers/bookmarks.ts - AI handlers
src/handlers/llm.ts - Auth middleware
src/middleware/auth.ts - Scheduled refresh
src/scheduled.ts
Reader services
- Subscription management
src/services/subscription-manager.ts - Feed refresh
src/services/feed-refresh.ts - Content fetching
src/services/content-fetcher.ts - Article content
src/services/content-store.ts - Daily digest
src/services/daily-digest.ts - LLM proxy
src/services/llm-proxy.ts
Data and integrations
- Cloudflare D1
- GitHub repository
- RSS feeds
- LLM provider
- Read-aloud service
Other components
- Reader
Connections 28
- Reader → App bootstrap: opens
- App bootstrap → Reading views: starts
- Reading views → API client: requests data
- Subscription views → API client: manages feeds
- AI features → API client: requests AI
- API client → HTTP routing: calls API
- HTTP routing → Auth middleware: checks access
- HTTP routing → Article handlers: dispatches
- HTTP routing → Subscription handlers: dispatches
- HTTP routing → OPML handlers: dispatches
- HTTP routing → Bookmark handlers: dispatches
- HTTP routing → AI handlers: dispatches
- Scheduled refresh → Feed refresh: starts refresh
- Article handlers → Feed refresh: refreshes feeds
- Feed refresh → Content fetching: fetches feeds
- Content fetching → RSS feeds: reads feeds
- Feed refresh → Cloudflare D1: stores metadata
- Article content → GitHub repository: archives articles
- AI handlers → Article content: loads article text
- AI handlers → LLM proxy: streams prompts
- LLM proxy → LLM provider: requests completion
- AI handlers → Daily digest: generates digest
- AI handlers → Cloudflare D1: reads and caches
- Subscription handlers → Subscription management: manages feeds
- Subscription management → Cloudflare D1: stores subscriptions
- Bookmark handlers → Cloudflare D1: stores bookmarks
- App bootstrap → Offline service worker: registers
- Reader → Read-aloud service: uses read-aloud