/Reader

Reader is simple, small and fast news aggregator written in Rust.

Primary LanguageRustGNU General Public License v3.0GPL-3.0

Reader

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.

screenshot

Features

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

Sources

  • RSS
  • Atom
  • Hacker News Best
  • Twitter

Configuration

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

Deployment

Check out docs/infrastructure.md on deployment notes.

Development

Requirements:

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 with cargo run to load sample data.

License

Licensed under GNU General Public License v3.0.