RSS Reader
A modern web-based RSS feed reader built with Rust and Rocket. Features a clean, dark-themed interface that allows you to:
- Add and manage RSS/Atom feeds
- View feed entries with titles, summaries, and timestamps
- Poll feeds for updates
- Organize feeds with categories
- Multi-user support with admin capabilities
Installation
Using Nix
This project is packaged with Nix flakes. To install and run it:
-
Make sure you have Nix installed with flakes enabled. Add this to your
/etc/nix/nix.confif you haven't already:experimental-features = nix-command flakes -
Install the package:
nix profile install git+https://code.everydayimshuflin.com/greg/rss-readerOr run it directly:
# Run with a persistent database nix run git+https://code.everydayimshuflin.com/greg/rss-reader -- -d /path/to/database.sqlite # Or try it out in demo mode (uses in-memory database) nix run git+https://code.everydayimshuflin.com/greg/rss-reader -- --demo
The application requires a SECRET_KEY environment variable to be set in order
to run. This key is used for encrypting cookies and other security-related
functionality. This is the same secret key described in Rocket's
documentation.
You can generate a suitable secret key using OpenSSL:
export SECRET_KEY=$(openssl rand -base64 32)
Development
To set up a development environment:
-
Clone the repository:
git clone https://code.everydayimshuflin.com/greg/rss-reader.git cd rss-reader -
Generate a secret key and set it in your environment:
export SECRET_KEY=$(openssl rand -base64 32) -
Enter the development shell:
nix develop -
Build and run the application from source:
# Run with a persistent database cargo run -- -d rss-reader.db # Or try it out in demo mode (uses in-memory database) cargo run -- --demo
The application will be available at http://localhost:8000.
Running in Production
For production deployments, make sure to:
- Generate a strong secret key:
openssl rand -base64 32 - Set it permanently in your environment or service configuration:
export SECRET_KEY="your-generated-key" - Keep this key consistent across application restarts to maintain user sessions
- Never share or commit this key to version control
Demo Mode
When running in demo mode (using the --demo flag), the application will:
- Use an in-memory SQLite database that is cleared when the application stops
- Create two pre-configured users:
- Admin user: username
admin, passwordadmin - Regular user: username
demo, passworddemo
- Admin user: username