.sqlx | ||
migrations | ||
src | ||
static | ||
templates | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
flake.lock | ||
flake.nix | ||
justfile | ||
README.md | ||
TODO.md |
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.conf
if you haven't already:experimental-features = nix-command flakes
-
Install the package:
nix profile install git+https://code.everydayimshuflin.com/greg/rss-reader
Or 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 on default port (8000) cargo run -- -d rss-reader.db # Run on a specific port cargo run -- -d rss-reader.db -p 3000 # Run in demo mode with custom port cargo run -- --demo -p 8080
The application will be available at http://localhost:<port>
(default port is 8000).
Command Line Options
-d, --database <PATH>
- Path to the SQLite database file (required unless in demo mode)--demo
- Run in demo mode with an in-memory database-p, --port <PORT>
- Port to listen on (default: 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