riffle

module
v0.0.0-...-5aad56d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2025 License: Apache-2.0

README

Riffle - RSS Feed Reader and Aggregator

Riffle is a powerful RSS feed reader and aggregator with a REST API for managing RSS sources and content.

Features

  • RSS Source Management: Add, update, delete, and list RSS sources
  • Content Management: Fetch, update, delete, and list RSS content
  • Recommendations: Get personalized content recommendations based on user feedback
  • Search: Search for content by keywords
  • Batch Operations: Perform batch operations on sources and content
  • OPML Import: Import RSS feeds from OPML files
  • Content Analysis: Analyze RSS content quality and relevance
  • Metrics: Prometheus metrics for monitoring
  • Profiling: Optional pprof endpoints for debugging
  • Modern Web UI: A responsive web interface built with Vue.js and Material 3 design

Getting Started

Prerequisites
  • Go 1.24 or higher
  • SQLite3
  • Node.js 16+ and npm (for frontend)
Installation
  1. Clone the repository:
git clone https://github.com/flyer103/riffle.git
cd riffle
  1. Build the backend application:
make build
  1. Set up the frontend:
cd frontend
npm install
Usage

Riffle provides several commands:

Running the Server
./riffle serve --port 8080 --db-path ./riffle.db
Running the Frontend
cd frontend
npm run serve

Then open your browser to http://localhost:3000

Importing OPML Files
./riffle import-opml --opml feeds.opml --db-path ./riffle.db
Analyzing RSS Feeds
./riffle run --opml feeds.opml --interests interests.txt --articles 5 --top 10
Command-line Options
Serve Command Options
  • --port: Port to listen on (default: 8080)
  • --db-path: Path to the SQLite database file (default: ./riffle.db)
  • --log-level: Log level (debug, info, warn, error) (default: info)
  • --enable-pprof: Enable pprof debugging endpoints (default: false)
  • --metrics-port: Port for Prometheus metrics (0 to disable) (default: 0)
  • --rate-limit: Rate limit in requests per second (0 to disable) (default: 100)
  • --enable-cors: Enable CORS (default: false)
  • --cors-origins: Allowed CORS origins (default: *)
  • --read-timeout: HTTP server read timeout (default: 30s)
  • --write-timeout: HTTP server write timeout (default: 30s)
Import OPML Command Options
  • --opml, -o: Path to OPML file (required)
  • --db-path: Path to the SQLite database file (default: ./riffle.db)
Run Command Options
  • --opml, -o: Path to OPML file (required)
  • --interests, -i: Path to file containing interests (one per line)
  • --articles, -n: Number of articles to fetch from each feed (default: 3)
  • --top, -t: Number of top articles to recommend (default: 1)
  • --model, -m: Perplexity API model to use for article analysis (default: r1-1776)

API Documentation

Riffle provides a comprehensive REST API for managing RSS sources, content, and recommendations. The API is documented in OpenAPI format.

For detailed API documentation, please refer to:

The API includes endpoints for:

  • RSS Source Management (CRUD operations)
  • Content Management (fetching, updating, deleting)
  • Content Search
  • Recommendations
  • System Information

Frontend

The frontend provides a modern web interface for reading RSS feeds:

  • Built with Vue.js and Material 3 design
  • Displays all RSS sources on the left side of the page
  • Shows the 10 most recent articles of each RSS source on the right side
  • Automatically refreshes RSS content every 10 minutes

For more information about the frontend, see the frontend README.

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.

Directories

Path Synopsis
cmd
riffle command
pkg
version
Package version provides a place to store version information, which can be set at build time.
Package version provides a place to store version information, which can be set at build time.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL