How nextcloud/news works
Nextcloud News is an RSS/Atom aggregator with a Vue client and a Nextcloud-hosted PHP API. The main user flow is browsing feeds and folders, requesting item lists, and changing read or starred state; controllers delegate those operations to services and database mappers. Separately, scheduled jobs fetch and parse subscriptions into items. The README also identifies a REST API; the tree documents import/export, sharing, search, recommendations, and podcast playback. Links for unsampled subsystems are limited to directory-level evidence.
Main entry points: routes.php Route definitions · FeedServiceV2.php Feed service · Db Entity mappers · App.vue Vue application
Components 25
News client
- Vue application
src/App.vue - Reader views
src/components/routes/Feed.vue - Client data services
src/dataservices/feed.service.ts - Vuex state
src/store/index.ts
HTTP API
- Route definitions
appinfo/routes.php - Feed endpoints
lib/Controller/FeedController.php - Item endpoints
lib/Controller/ItemController.php - REST item API
lib/Controller/ItemApiController.php
Feed domain
- Feed service
lib/Service/FeedServiceV2.php - Item service
lib/Service/ItemServiceV2.php - Folder service
lib/Service/FolderServiceV2.php - Entity mappers
lib/Db
Background ingestion
- Feed updater
lib/Service/UpdaterService.php - Feed fetcher
lib/Fetcher/FeedFetcher.php - Feed-IO parser
Product features
- OPML and article transfer
lib/Service - Item sharing
lib/Service/ShareService.php - Search providers
lib/Search - Feed discovery
lib/Explore/RecommendedSites.php - Podcast playback
src/App.vue - Favicon service
lib/Controller/FaviconController.php
Other components
- Reader
- Nextcloud database
- Nextcloud scheduler
- Feed servers
Connections 27
- Reader → Vue application: uses
- Vue application → Reader views: renders
- Vue application → Vuex state: dispatches
- Reader views → Client data services: requests data
- Client data services → Route definitions: calls API
- Route definitions → Feed endpoints: routes feed calls
- Route definitions → Item endpoints: routes item calls
- Route definitions → REST item API: routes REST calls
- Feed endpoints → Feed service: delegates
- Item endpoints → Item service: delegates
- REST item API → Item service: delegates
- Feed service → Entity mappers: reads and writes
- Item service → Entity mappers: reads and writes
- Folder service → Entity mappers: reads and writes
- Entity mappers → Nextcloud database: persists entities
- Nextcloud scheduler → Feed updater: runs jobs
- Feed updater → Feed service: updates feeds
- Feed service → Feed fetcher: fetches feed
- Feed fetcher → Feed-IO parser: parses feed
- Feed fetcher → Feed servers: requests feeds
- Feed service → Item service: updates items
- Route definitions → OPML and article transfer: routes transfers
- Route definitions → Item sharing: routes sharing
- Vue application → Podcast playback: plays enclosure
- Feed endpoints → Feed discovery: discovery support
- Route definitions → Favicon service: routes favicon
- Search providers → Entity mappers: searches entities