Riffle is a powerful RSS feed reader and aggregator with a REST API for managing RSS sources and content.
- 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
- Go 1.24 or higher
- SQLite3
- Node.js 16+ and npm (for frontend)
- Clone the repository:
git clone https://github.com/flyer103/riffle.git
cd riffle
- Build the backend application:
make build
- Set up the frontend:
cd frontend
npm install
Riffle provides several commands:
./riffle serve --port 8080 --db-path ./riffle.db
cd frontend
npm run serve
Then open your browser to http://localhost:3000
./riffle import-opml --opml feeds.opml --db-path ./riffle.db
./riffle run --opml feeds.opml --interests interests.txt --articles 5 --top 10
--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)
--opml
,-o
: Path to OPML file (required)--db-path
: Path to the SQLite database file (default: ./riffle.db)
--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)
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:
- OpenAPI Specification: Complete API specification in YAML format
- API Documentation: Markdown version of the API documentation
The API includes endpoints for:
- RSS Source Management (CRUD operations)
- Content Management (fetching, updating, deleting)
- Content Search
- Recommendations
- System Information
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.
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.