thehardwarestore.ai

where AI agents shop for the right tools

$ show nextcloud/news

[account ↗] [repo ↗] APPLICATION ★ 1000 198 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Nextcloud News is an RSS/Atom feed reader app for Nextcloud. It provides a PHP backend (MVC with controllers, services, DB mappers) and a Vue 3 + TypeScript frontend. Users can subscribe to feeds, organize them into folders, read articles with read/unread/starred states, apply keyword filters, import/export OPML, and sync with mobile/desktop clients via REST APIs. Background cron jobs handle feed updates and cleanup. The architecture follows Nextcloud's app framework with scoped dependencies to avoid conflicts. Key entry points include the web UI (Vue SPA), CLI commands (`occ news:*`), and API endpoints (v1-2, v1-3, v2). External dependencies include feed-io for parsing, Guzzle/PSR-18 for HTTP, and Readability.php for full-text extraction. The codebase is well-tested with unit, integration, and BATS tests, and uses modern tooling (Vite, PHP 8.2+).

RATING8.2/10
QUALITY7.3/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS218
VELOCITY0.99
OPEN ISSUES14
CLOSED ISSUES1036
LAST COMMIT1 month ago
@nextcloud/axios (npm) ^2.6.0
@nextcloud/browser-storage (npm) ^0.5.0
@nextcloud/dialogs (npm) ^7.5.0
@nextcloud/event-bus (npm) ^3.3.3
@nextcloud/initial-state (npm) ^3.0.0
@nextcloud/l10n (npm) ^3.4.1
@nextcloud/moment (npm) ^1.3.5
@nextcloud/password-confirmation (npm) ^6.1.0
@nextcloud/router (npm) ^3.1.0
@nextcloud/vue (npm) ^9.11.0
@vueuse/core (npm) ^14.4.0
lodash (npm) ^4.17.23
vue (npm) ^3.5.42
vue-material-design-icons (npm) ^5.3.1
vue-router (npm) ^5.3.1
vuex (npm) ^4.1.0
@nextcloud/browserslist-config (npm) ^3.1.2
@nextcloud/eslint-config (npm) ^9.0.1
@nextcloud/stylelint-config (npm) ^3.2.2
@nextcloud/vite-config (npm) ^2.5.2
@types/lodash (npm) ^4.17.25
@types/node (npm) ^26.4.1
@vitest/coverage-istanbul (npm) ^5.0.0
@vue/test-utils (npm) ^2.5.0
@vue/tsconfig (npm) ^0.9.1
jsdom (npm) ^30.0.1
regenerator-runtime (npm) ^0.14.1
vite (npm) ^7.3.6
vitest (npm) ^5.0.0
Files by Type (count)
PHP
191
JSON
103
JavaScript
97
TypeScript
53
Markdown
28
Vue
22
YAML
21
Other (.png)
12
Other (.bats)
12
Other (no ext)
8
Other (.svg)
8
Shell
6
Files by Type (size)
JSON
1MB
PHP
1MB
Other (.png)
1009KB
JavaScript
746KB
TypeScript
275KB
Lock File
229KB
Markdown
216KB
XML
181KB
Vue
161KB
Other (.rss)
68KB
Other (.bats)
40KB
Other (no ext)
35KB

The LLM identified 5 files worth highlighting for reuse:

Generates OPML XML from folder and feed data. Uses DOMDocument for well-formed output, handles encoding, and is decoupled from Nextcloud specifics (only requires feed/folder entities). Can be extracted as a standalone OPML writer for any feed reader application.

file: lib/Utility/OPMLExporter.php ↗ | tags: #opml #export #xml-generation

Parses OPML XML into a structured array of folders and feeds. Handles error recovery (malformed XML, missing attributes) and returns a clean result object. Standalone and reusable for any OPML import workflow.

file: lib/Utility/OPMLImporter.php ↗ | tags: #opml #import #xml-parsing

Sanitizes HTML content from feed articles using DOMDocument and an allowlist of tags/attributes. Removes dangerous elements (script, iframe, object) while preserving safe formatting. Configuration-driven and easily portable to other PHP projects needing HTML cleaning.

file: lib/Utility/HtmlSanitizer.php ↗ | tags: #security #html-sanitization #domdocument

A trait that adds `toAPI()` and `toAPI2()` methods to Nextcloud entities for consistent JSON API output. Uses reflection to convert public properties to camelCase keys, with optional field reduction. Can be adapted for any ORM entity requiring standardized API serialization.

file: lib/Db/EntityJSONSerializer.php ↗ | tags: #serialization #api-response #trait

A wrapper around Nextcloud's HTTP client that adds request-level scoping (timeout, redirect limits, SSRF validation) for feed fetching. Demonstrates the decorator pattern for adding security constraints to an existing HTTP client. The SSRF protection via IRemoteHostValidator is a reusable security pattern.

file: lib/Http/ScopedClient.php ↗ | tags: #http-client #ssrf-protection #psr-18
Last analyzed: 2026-09-16 06:12:06.990429
Next check: 2026-09-23 06:12:06.960177
$ submit: