{"id":14036189,"url":"https://github.com/flysteur-dev/pager","last_synced_at":"2025-07-27T03:31:33.582Z","repository":{"id":44304552,"uuid":"182435491","full_name":"flysteur-dev/pager","owner":"flysteur-dev","description":"Minimalist serverless RSS reader (PWA, React, CouchDB, Web worker, Offline persistance, Docker)","archived":false,"fork":false,"pushed_at":"2023-04-30T23:50:00.000Z","size":3300,"stargazers_count":19,"open_issues_count":6,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-13T03:04:29.947Z","etag":null,"topics":["couchdb","docker","indexdb","offline-first","pwa","reactjs","rss-reader","webworkers"],"latest_commit_sha":null,"homepage":"https://flysteur-dev.github.io/pager/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flysteur-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-04-20T17:32:08.000Z","updated_at":"2023-02-03T16:21:56.000Z","dependencies_parsed_at":"2024-04-16T05:48:33.537Z","dependency_job_id":null,"html_url":"https://github.com/flysteur-dev/pager","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flysteur-dev%2Fpager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flysteur-dev%2Fpager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flysteur-dev%2Fpager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flysteur-dev%2Fpager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flysteur-dev","download_url":"https://codeload.github.com/flysteur-dev/pager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227753870,"owners_count":17814744,"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":["couchdb","docker","indexdb","offline-first","pwa","reactjs","rss-reader","webworkers"],"created_at":"2024-08-12T03:01:51.991Z","updated_at":"2024-12-02T15:31:33.752Z","avatar_url":"https://github.com/flysteur-dev.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://flysteur-dev.github.io/pager/\" rel=\"noopener\" target=\"_blank\"\u003e\n\t\t\u003cimg width=\"150\" src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/favicon.png\" alt=\"Pager logo\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ePager\u003c/h1\u003e\n\n[![Cypress.io tests](https://img.shields.io/badge/cypress.io-tests-green.svg?style=flat-square)](https://cypress.io)\n\n## Demo\n\n[**Try it**](https://flysteur-dev.github.io/pager/) with your mobile phone or desktop browser.\u003cbr\u003e\nWant to keep it? Add it to your dashboard!\n\nImportant: This demo is using [cors-anywhere](https://github.com/Rob--W/cors-anywhere) and may not be working or subject to usage restriction. (Not working anymore please refer to [#301](https://github.com/Rob--W/cors-anywhere/issues/301))\u003cbr\u003e\nPrefer using the docker image, who is using a built in nginx reverse proxy to get around of CORS restriction, see instruction below.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/1.png\" width=\"250px\" alt=\"feed list\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/2.png\" width=\"250px\" alt=\"embedded viewer\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/3.png\" width=\"250px\" alt=\"feeds\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/4.png\" width=\"250px\" alt=\"dark feed list\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/5.png\" width=\"250px\" alt=\"dark embedded viewer\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/6.png\" width=\"250px\" alt=\"sharing\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/7.png\" width=\"760px\" alt=\"desktop\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/flysteur-dev/pager/master/public/8.png\" width=\"760px\" alt=\"dark desktop\"\u003e\n\u003c/p\u003e\n\n## Why ?\n\n\"Read and Run Everywhere..\"\u003cbr\u003e\u003cbr\u003e\n\nPager wants to be a very very minimalist multi-platform rss reader.\u003cbr\u003e\nIt will ever only use web technologies and will stay as much as possible serverless** with business logic in the client side.\u003cbr\u003e\nOptionnally (later) it will offer syncing option to share feeds between instances (desktop, mobile, etc..)\u003cbr\u003e\u003cbr\u003e\n\nPager doesn't have many dependencies and aims to keep code understandable.\u003cbr\u003e\u003cbr\u003e\n\nMain dependencies (thanks to) :\u003cbr\u003e\n- [rss-parser](https://github.com/bobby-brennan/rss-parser) : A small library for turning RSS XML feeds into JS objects.\n- [pouchdb](https://github.com/pouchdb/pouchdb) : JS database to work offline and inspired by [CouchDB](http://couchdb.apache.org/)\n\n** The Web App requires at least a reverse proxy to get around CORS restriction to fetch feed over another domain.\n\n## Roadmap\n\n- [x] Offline\n- [x] Feed subscription\n- [x] Web App\n- [x] Read article in viewer\n- [x] Media sharing (require chrome 74 or fallback to clipboard)\n- [x] Adding article to favorite\n- [x] Multi view option (compact, large)\n- [x] Dark mode\n- [ ] Keyboard shortcuts\n- [ ] Web worker to refresh feeds in background\n- [ ] Syncing using couchDB\n- [ ] Desktop app using electron (WIP: electron branch)\n\n## Self hosted\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/flysteur-dev/pager)\n\u003cbr\u003e\n\n```sh\n// WITH DOCKER (\u003c 25 Mo)\n//\ngit clone git@github.com:flysteur-dev/pager.git\n\n// Install\ncd pager\n\n// Build the docker container\ndocker build --tag=pager .\n\n// Run\ndocker run --env PORT=80 -p 3000:80 pager\nopen http://localhost:3000\n```\n\n```sh\n// WITHOUT DOCKER\n//\ngit clone git@github.com:flysteur-dev/pager.git\n\n// Install\ncd pager\nnpm install\n\n// Update constants\nedit PROXY_PATH in /src/Helpers/Constants.js to \"https://cors-anywhere.herokuapp.com/\"\n\n// Run\nnpm start\nopen http://localhost:3000\n```\n\n## Changelog\n\nCheck out the [release page](https://github.com/flysteur-dev/pager/releases)\n\n## Contributing\n\nIf you find this project useful, we'd appreciate any contribution!\u003cbr\u003e\nYou can also check [project page](https://github.com/flysteur-dev/pager/projects/1) to find something to start.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflysteur-dev%2Fpager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflysteur-dev%2Fpager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflysteur-dev%2Fpager/lists"}