98 lines
2.8 KiB
Markdown
98 lines
2.8 KiB
Markdown
# 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:
|
|
|
|
1. 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
|
|
```
|
|
|
|
2. Install the package:
|
|
```bash
|
|
nix profile install git+https://code.everydayimshuflin.com/greg/rss-reader
|
|
```
|
|
|
|
Or run it directly:
|
|
```bash
|
|
# 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](https://rocket.rs/guide/v0.5/configuration/#secret-key).
|
|
|
|
You can generate a suitable secret key using OpenSSL:
|
|
```bash
|
|
export SECRET_KEY=$(openssl rand -base64 32)
|
|
```
|
|
### Development
|
|
|
|
To set up a development environment:
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://code.everydayimshuflin.com/greg/rss-reader.git
|
|
cd rss-reader
|
|
```
|
|
|
|
2. Generate a secret key and set it in your environment:
|
|
```bash
|
|
export SECRET_KEY=$(openssl rand -base64 32)
|
|
```
|
|
|
|
3. Enter the development shell:
|
|
```bash
|
|
nix develop
|
|
```
|
|
|
|
4. Build and run the application from source:
|
|
```bash
|
|
# 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:
|
|
1. Generate a strong secret key:
|
|
```bash
|
|
openssl rand -base64 32
|
|
```
|
|
2. Set it permanently in your environment or service configuration:
|
|
```bash
|
|
export SECRET_KEY="your-generated-key"
|
|
```
|
|
3. Keep this key consistent across application restarts to maintain user sessions
|
|
4. 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`, password `admin`
|
|
- Regular user: username `demo`, password `demo`
|