MCPSERV.CLUB
Leed

Leed

Self-Hosted

Minimalist RSS/ATOM aggregator for fast, non‑intrusive feed reading

Stale(55)
227stars
0views
Updated Nov 28, 2024

Overview

Discover what makes Leed powerful

Leed is a lightweight, self‑hosted RSS/ATOM aggregator written in PHP that prioritizes speed and minimalism. It decouples feed fetching from the user experience by running a cron‑driven background task (`action.php`) that pulls, parses, and stores feed entries in a MySQL database. When a user logs in through the web interface, Leed simply reads from this pre‑populated cache, ensuring instant page loads even on low‑powered hardware.

Cron‑based ingestion

OPML import/export

Responsive UI

Synchronization token

Overview

Leed is a lightweight, self‑hosted RSS/ATOM aggregator written in PHP that prioritizes speed and minimalism. It decouples feed fetching from the user experience by running a cron‑driven background task (action.php) that pulls, parses, and stores feed entries in a MySQL database. When a user logs in through the web interface, Leed simply reads from this pre‑populated cache, ensuring instant page loads even on low‑powered hardware.

Key Features

  • Cron‑based ingestion: All network I/O and XML parsing occur in a scheduled PHP script, keeping the web server stateless during user sessions.
  • OPML import/export: Enables migration from other aggregators and bulk subscription management via a standard XML format.
  • Responsive UI: Built with vanilla PHP/HTML/CSS; no heavy JavaScript frameworks, making it trivial to host on shared servers or containers.
  • Synchronization token: When invoking the ingestion script via HTTP (e.g., wget), a secret code protects against unauthorized triggers.

Technical Stack

LayerTechnology
RuntimePHP 7.2+ (CLI & Apache mod_php)
DatabaseMySQL / MariaDB (schema in install.php)
Web ServerApache (recommended, Nginx unsupported as of v1.0)
BackgroundUnix cron (or systemd timers) calling action.php
OptionalDocker image available on GitHub Container Registry for quick deployment

Leed’s codebase follows a classic Model–View–Controller pattern with procedural PHP. The models/ directory contains data access objects that wrap PDO calls, while views/ holds minimal PHP templates. There is no ORM; direct SQL queries are used for performance and simplicity.

Core Capabilities & APIs

  • REST‑like endpoints: action.php?action=… exposes a few read/write operations (synchronize, delete entry) that can be consumed by external scripts or custom front‑ends.
  • Webhooks: By configuring a cron job to hit an external URL after each sync, developers can integrate Leed with notification services (Slack, Discord).
  • Plugin hooks: The hooks/ directory allows third‑party PHP files to be loaded during feed parsing, enabling custom filtering or enrichment (e.g., Markdown rendering of descriptions).

Deployment & Infrastructure

Leed is designed for self‑hosting on LAMP stacks. Its minimal dependencies mean it can run in a small Docker container:

docker run -p 8080:80 ghcr.io/leedrss/leed:latest

For scalability, the cron job can be distributed across multiple nodes by pointing each to a shared MySQL instance and using a unique sync code. Horizontal scaling is limited only by the database’s read/write throughput, as each node processes all feeds independently.

Integration & Extensibility

  • OPML: Import/export facilitates integration with other aggregators or data pipelines.
  • Custom feed processors: Developers can drop PHP scripts into hooks/ to transform RSS items (e.g., strip HTML, add tags).
  • API consumption: The lightweight REST endpoints can be wrapped by a GraphQL layer or consumed directly from a mobile app.

Developer Experience

  • Configuration: A single config.php holds database credentials, sync code, and cron schedule. No complex YAML or JSON files.
  • Documentation: The README is comprehensive, with clear sections for prerequisites, installation, and cron setup. Inline comments in the code provide additional context.
  • Community: The project is hosted on GitHub with an active issue tracker. Contributors include multiple maintainers, and the AGPL‑3.0 license encourages open collaboration.

Use Cases

ScenarioWhy Leed is a fit
Personal RSS dashboardFast, low‑resource front‑end with cron ingestion.
Internal knowledge baseCentralized feed aggregation for teams; OPML sync with existing tools.
Embedded in a larger PHP appReuse the action.php sync logic via CLI or HTTP; extend with custom hooks.
Containerized microserviceDeploy as a sidecar to fetch feeds for a headless CMS or static site generator.

Advantages Over Alternatives

  • Performance: By separating ingestion from rendering, page load times stay sub‑200 ms even with dozens of feeds.
  • Simplicity: No JavaScript frameworks or heavy dependencies; a single PHP binary and MySQL suffice.
  • Open‑source freedom: AGPL licensing ensures that any derivative must remain open, fostering community contributions.
  • Ease of deployment: Works out‑of‑the‑box on shared hosting with Apache; Docker images reduce friction for cloud deployments.

Leed offers developers a lean, well‑documented foundation to build or integrate RSS aggregation into larger systems without the overhead of full‑featured readers.

Open SourceReady to get started?

Join the community and start self-hosting Leed today