{"id":26895714,"url":"https://github.com/fylmtm/reader","last_synced_at":"2025-07-26T18:13:17.138Z","repository":{"id":37888856,"uuid":"195455712","full_name":"FylmTM/Reader","owner":"FylmTM","description":"Reader is simple, small and fast news aggregator written in Rust.","archived":false,"fork":false,"pushed_at":"2023-01-05T02:05:46.000Z","size":5596,"stargazers_count":6,"open_issues_count":30,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T02:52:52.921Z","etag":null,"topics":["react","reader","rss-reader","rust","typescript","web"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FylmTM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-05T19:02:47.000Z","updated_at":"2023-03-07T07:24:19.000Z","dependencies_parsed_at":"2023-02-03T05:16:36.519Z","dependency_job_id":null,"html_url":"https://github.com/FylmTM/Reader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FylmTM%2FReader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FylmTM%2FReader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FylmTM%2FReader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FylmTM%2FReader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FylmTM","download_url":"https://codeload.github.com/FylmTM/Reader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253813461,"owners_count":21968486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["react","reader","rss-reader","rust","typescript","web"],"created_at":"2025-04-01T02:52:56.591Z","updated_at":"2025-05-12T19:55:15.357Z","avatar_url":"https://github.com/FylmTM.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Reader\n======\n\n**Reader** is simple, small and fast news aggregator written in Rust.\n\n* Available as a single static binary, no dependencies.\n* Responsive web UI.\n* Multiple [sources](#sources).\n* Low CPU and memory usage.\n\n![screenshot](./screenshot.png)\n\n#### Features\n\n**Supported browsers:** latest versions of Chrome, Firefox, Edge, Safari.\n\n- [x] Web UI\n- [ ] Mobile Web UI\n- [x] Multi-user\n- [x] Categories\n- [x] Read later\n- [x] Option to show only unread posts\n- [ ] Shortcuts\n- [ ] Category \u0026 feed management\n- [ ] User management\n\n#### Sources\n\n- [x] RSS\n- [x] Atom\n- [ ] Hacker News Best\n- [ ] Twitter\n\n## Configuration\n\nReader can be configured with either `Rocket.toml` file or environment variables.\n\nExample, which lists all possible configuration parameters and their defaults:\n\n```\n# Rocket.toml\n[global]\naddress = \"0.0.0.0\"           # ROCKET_ADDRESS\nport = 8000                   # ROCKET_PORT\n\n# Path where SQLite database will be created\ndb_path = \"db.sqlite\"         # ROCKET_DB_PATH\n# SQLite connection pool size\ndb_pool_size = 10             # ROCKET_DB_POOL_SIZE\n\n# Whether Reader should periodically update all feeds\nfeeds_update_enabled = true   # ROCKET_FEEDS_UPDATE_ENABLED\n# How long to wait between feed updates in minutes\nfeeds_update_interval = 10    # ROCKET_FEEDS_UPDATE_INTERVAL\n\n# If set to true Reader will look for `fixture.sql` file and apply it to a database.\n# As an example, it is used in development to load sample data.\n# Alternatively it can be used to add any data you want to a database (i.e. create users).\n# !!! Use cautiously !!!\nload_fixture = false\n```\n\n## Deployment\n\nCheck out [docs/infrastructure.md](./docs/infrastructure.md) on deployment notes.\n\n## Development\n\n**Requirements:**\n\n* Rust nightly (install via [rustup](https://rustup.rs/)).\n* [Cargo make](https://github.com/sagiegurari/cargo-make)\n* [rustfmt](https://github.com/rust-lang/rustfmt)\n* [Node](https://nodejs.org)\n* [Yarn](https://yarnpkg.com)\n\n**Optional:**\n\n* [insta](https://github.com/mitsuhiko/insta) (nice snapshot review/update workflow)\n\n```sh\nrustup default nightly\nrustup component add rustfmt\ncargo install cargo-make\n\n# For user-friendly review of snapshots in integration tests, when they fail.\ncargo install cargo-insta\n```\n\nBuild process is orchestrated by `cargo make`.\nCheck [Makefile.toml](./Makefile.toml) to find out details behind these command.\n\n**Build release:**\n\n```sh\ncargo make build\n```\n\n**Verify:**\n\n```sh\ncargo make verify\n```\n\n**Verify (with automatic formatting and lint fixes):**\n\n```sh\ncargo make fix\n# or\ncargo make\n```\n\n**Notes:**\n\n* Add `ROCKET_LOAD_FIXTURE=true` environment variable when running with `cargo run` to load sample data.\n\n## License\n\nLicensed under [GNU General Public License v3.0](https://github.com/FylmTM/Reader/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffylmtm%2Freader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffylmtm%2Freader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffylmtm%2Freader/lists"}