MCPSERV.CLUB
JARR

JARR

Self-Hosted

Just Another RSS Reader – clustered news aggregation

Active(88)
128stars
0views
Updated 1 day ago

Overview

Discover what makes JARR powerful

JARR (Just Another RSS Reader) is a full‑stack, self‑hosted web application that ingests, aggregates, and displays RSS/Atom feeds. From a developer’s standpoint, it is built to be lightweight yet extensible: the backend is a Python 3.4+ Flask service that exposes a RESTful API, while the frontend is a single‑page React application. The design follows a classic MVC pattern with clear separation between data ingestion, business logic, and presentation layers.

Backend

Frontend

Background Processing

Deployment

Overview

JARR (Just Another RSS Reader) is a full‑stack, self‑hosted web application that ingests, aggregates, and displays RSS/Atom feeds. From a developer’s standpoint, it is built to be lightweight yet extensible: the backend is a Python 3.4+ Flask service that exposes a RESTful API, while the frontend is a single‑page React application. The design follows a classic MVC pattern with clear separation between data ingestion, business logic, and presentation layers.

Architecture & Technical Stack

  • Backend: Flask (Python 3.4+) serves the API and orchestrates background jobs via Celery for feed polling, content extraction, and TF‑IDF clustering. SQLAlchemy provides a pluggable ORM layer; the default deployment uses PostgreSQL, but SQLite and MySQL are supported through dialect selection. Authentication is handled by Flask‑Login with optional OAuth2 providers, and JWT tokens are available for API clients.
  • Frontend: React (ES6+) consumes the REST endpoints and renders a responsive three‑column layout. State is managed with Redux, enabling optimistic UI updates during feed refreshes and article status changes.
  • Background Processing: Celery workers fetch feeds asynchronously, parse XML with feedparser, and store entries in the database. The clustering feature uses scikit‑learn’s TF‑IDF vectorizer to group similar articles by link or content, exposing the clusters via an API endpoint.
  • Deployment: The project ships with Docker Compose files that spin up the Flask app, PostgreSQL database, and a Redis broker for Celery. The Compose stack also includes a Nginx reverse proxy that handles HTTPS termination via Let’s Encrypt certificates.

Core Capabilities & APIs

  • Feed Management: CRUD operations for categories and feeds; batch import of OPML files; error handling with retry back‑off.
  • Article Handling: Mark as read/unread, favorite, and annotate; retrieve full content via a readability‑style extractor or original link fallback.
  • Clustering API: Endpoints /clusters return JSON payloads of grouped article IDs, with optional filters on similarity threshold or time window.
  • Webhook Support: Developers can register webhooks that fire on new article ingestion or feed status changes, enabling integrations with external services (e.g., Slack, Zapier).
  • Extensibility: A plugin hook system allows custom Python modules to tap into the feed fetch pipeline, inject additional metadata, or modify clustering logic. The plugin registry is exposed through /plugins and can be managed via the admin UI.

Deployment & Infrastructure

JARR is designed for small to medium‑sized deployments but scales horizontally with stateless Flask workers behind a load balancer. The Docker images are minimal, and the application can run on any host that supports Python 3.4+ and Docker (or without containers via a virtualenv). For production, the recommended stack is:

  1. Redis – message broker for Celery.
  2. PostgreSQL – primary data store (recommended 12+).
  3. Nginx/Traefik – reverse proxy and HTTPS.
  4. Celery Workers – multiple instances for parallel feed fetching.

The self‑hosting guide covers environment variables, secret management (e.g., READABILITY_KEY), and database migrations via Alembic.

Integration & Extensibility

  • API First: All data operations are exposed through RESTful endpoints, making it trivial to build custom clients or integrate JARR into existing workflows.
  • Webhooks & Event Hooks: The webhook system is fully configurable; payloads include article metadata and can be signed with HMAC for security.
  • Plugin Architecture: Developers can write plugins in pure Python, register them via a plugins.yml file, and hook into events such as on_feed_fetch, on_article_parse, or before_cluster. This opens the door to custom analytics, sentiment analysis, or even AI‑driven summarization.
  • Custom Themes: The React frontend supports CSS overrides and optional custom component injection, allowing teams to brand the UI without touching core code.

Developer Experience & Community

The project boasts comprehensive unit and integration tests (coverage > 80%) with CI pipelines on CircleCI. Documentation is split into three main parts: a quick‑start guide, an API reference (auto‑generated with Swagger), and a developer manual detailing the plugin system. The community is active on GitHub Discussions, where feature requests and bug reports are triaged promptly. Licensing under AGPLv3 ensures that any derivative work remains open, encouraging contributions and fostering a collaborative ecosystem.

Use Cases

  • Enterprise Knowledge Management: Embed JARR in an intranet to aggregate internal blogs, product updates, and external industry feeds with custom clustering for trend analysis.
  • Personal Research: Use the clustering feature to surface related academic articles or news stories, reducing manual curation.
  • Developer Portals: Provide a unified feed reader for SDKs, libraries, and community announcements, exposing the API to third‑party integrations.
  • Educational Platforms: Deploy JARR as a learning tool where students subscribe to course feeds and receive organized, searchable content.

Advantages Over Alternatives

  • Open‑Source & Self‑Hosted: No vendor lock‑in; full control over data and infrastructure.
  • Extensible Clustering: Built‑in TF‑IDF clustering is rarely found in free RSS readers.
  • Docker‑Ready: Rapid deployment with minimal configuration.
  • Active Development & Testing: Regular updates, high test coverage, and a transparent issue tracker.

Open SourceReady to get started?

Join the community and start self-hosting JARR today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
AGPL-3.0
Stars
128
Technical Specs
Pricing
Open Source
Database
PostgreSQL
Supported OS
Linux
Author
jaesivsm
jaesivsm
Last Updated
1 day ago