Reader is simple, small and fast news aggregator written in Rust.
- Available as a single static binary, no dependencies.
- Responsive web UI.
- Multiple sources.
- Low CPU and memory usage.
Supported browsers: latest versions of Chrome, Firefox, Edge, Safari.
- Web UI
- Mobile Web UI
- Multi-user
- Categories
- Read later
- Option to show only unread posts
- Shortcuts
- Category & feed management
- User management
- RSS
- Atom
- Hacker News Best
Reader can be configured with either Rocket.toml
file or environment variables.
Example, which lists all possible configuration parameters and their defaults:
# Rocket.toml
[global]
address = "0.0.0.0" # ROCKET_ADDRESS
port = 8000 # ROCKET_PORT
# Path where SQLite database will be created
db_path = "db.sqlite" # ROCKET_DB_PATH
# SQLite connection pool size
db_pool_size = 10 # ROCKET_DB_POOL_SIZE
# Whether Reader should periodically update all feeds
feeds_update_enabled = true # ROCKET_FEEDS_UPDATE_ENABLED
# How long to wait between feed updates in minutes
feeds_update_interval = 10 # ROCKET_FEEDS_UPDATE_INTERVAL
# If set to true Reader will look for `fixture.sql` file and apply it to a database.
# As an example, it is used in development to load sample data.
# Alternatively it can be used to add any data you want to a database (i.e. create users).
# !!! Use cautiously !!!
load_fixture = false
Check out docs/infrastructure.md on deployment notes.
Requirements:
- Rust nightly (install via rustup).
- Cargo make
- rustfmt
- Node
- Yarn
Optional:
- insta (nice snapshot review/update workflow)
rustup default nightly
rustup component add rustfmt
cargo install cargo-make
# For user-friendly review of snapshots in integration tests, when they fail.
cargo install cargo-insta
Build process is orchestrated by cargo make
.
Check Makefile.toml to find out details behind these command.
Build release:
cargo make build
Verify:
cargo make verify
Verify (with automatic formatting and lint fixes):
cargo make fix
# or
cargo make
Notes:
- Add
ROCKET_LOAD_FIXTURE=true
environment variable when running withcargo run
to load sample data.
Licensed under GNU General Public License v3.0.