{"id":21062694,"url":"https://github.com/gorillab/reader","last_synced_at":"2026-01-02T01:28:03.092Z","repository":{"id":97704853,"uuid":"91901846","full_name":"gorillab/reader","owner":"gorillab","description":"A microservices simple tech feed reader","archived":false,"fork":false,"pushed_at":"2018-01-05T18:25:11.000Z","size":2002,"stargazers_count":1,"open_issues_count":5,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-20T20:34:50.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/gorillab.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,"publiccode":null,"codemeta":null}},"created_at":"2017-05-20T16:26:54.000Z","updated_at":"2019-12-20T11:35:22.000Z","dependencies_parsed_at":"2023-04-11T08:17:19.895Z","dependency_job_id":null,"html_url":"https://github.com/gorillab/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/gorillab%2Freader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorillab%2Freader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorillab%2Freader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gorillab%2Freader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gorillab","download_url":"https://codeload.github.com/gorillab/reader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243505964,"owners_count":20301619,"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":[],"created_at":"2024-11-19T17:39:53.494Z","updated_at":"2026-01-02T01:28:03.059Z","avatar_url":"https://github.com/gorillab.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# [reader](https://reader.gorillab.co)\n\nA customizable feeds reader on web, mobile, messenger bot and even terminal platforms.\n\n## Inspiration\n\nThe idea is started from each [Gorillab](https://gorillab.co)'s members struggling to find a good, minimal \u0026 beautiful feeds reader. And to be inspired by a simple yet [reader.one](http://reader.one) app, we decide to create our own reader that not only meets our needs but also to develop new app development skills.\n\n![](images/reader.one.png)\n\n## Overview\n\n![](images/overview.jpg)\n\nUser can read news on the web, mobile apps, messenger bot or even terminal.\n\nThe interesting parts are everyone can see each other's feeds \u0026 activities on there own wall (like facebook timeline). And that means there will be a place you can explore the world's activities, the reader homepage.\n\nInteresting right! Keep moving to the Architecture of reader.\n\n## Architecture\n\n![](images/architecture.jpg)\n\nThe following topics describe each part of the software architecture.\n\n### Apps\n\nReader will be developed in several platforms:\n- Web app: react\n- Mobile app (iOS): react-native\n- Chat bot: messenger platform\n- CLI app (Terminal on Mac OS X): commander\n\n### SDKs\n\nSDKs that help Reader apps to work with the api to get/update data. Based on the platforms, we will develop:\n- JS SDK: web \u0026 mobile apps\n- Node SDK: messenger bot \u0026 CLI app\n\n### API Service\n\nNode/Express based API web service that serves feeds to user.\n\n### Scraper Admin\n\nThe admin service that manages multiple scrapers. It will ask them periodically to scrap data from specified source and store responded data to the database.\n\n### Scraper\n\nThe service that scrap data from specified source whenever the admin requests.\n\n### Database\n\nFeeds, user accounts and data storage.\n\n## Database Design\n\n![](images/database.jpg)\n\n### User\n\nThe user account with basic information.\n\n### Source\n\nThe source entity is our news source such as Hacker News, GitHub Trending, Medium, Quora, etc. The user will subscribe source(s) to read news.\n\n### Post\n\nThis is the news post from source that user subscribed. The user is not only able to read but also to share and save (bookmark) for later reading.\n\n## Technologies\n\n- Front-end: React, React-Native, Messenger Platform, Commander, Bootstrap, Sass\n- Back-end: Express, Passport, Mongoose\n- Database: MongoDB\n- DevOps: Docker, Nginx, PM2, Travis-CI, Heroku\n- Tools: swagger-node, feedparser, create-react-app, create-react-native-app\n\n## Development Stages\n\n### Development\n\nReader will be run in local at [https://reader.dev](https://reader.dev). Checkout the following repositories for development:\n\n**Web**\n- [reader-web](https://github.com/gorillab/reader-web): web-based app\n- [reader-theme](https://github.com/gorillab/reader-theme): customized bootstrap theme\n- [reader-js](https://github.com/gorillab/reader-js): js sdk\n\n**Services**\n- [reader-api](https://github.com/gorillab/reader-api): api service\n- [reader-scraper-admin](https://github.com/gorillab/reader-scraper-admin): scrapers admin service\n- [reader-scraper](https://github.com/gorillab/reader-scraper): base scraper service\n- [reader-github-trending](https://github.com/gorillab/reader-github-trending): github trending scraper based on reader-scraper\n- [reader-hn](https://github.com/gorillab/reader-hn): hacker news scraper\n- [reader-medium](https://github.com/gorillab/medium): medium scraper\n\n**Tools**\n- [swagger-node](https://github.com/gorillab/swagger-node): for generating api, scrapers \u0026 scraper-admin services from openapi yaml file\n\n### Staging\n\nWe use Heroku to run many instances of reader services:\n- Web: [https://staging.reader.gorillab.co](https://reader.gorillab.co)\n- API: [https://staging.reader.gorillab.co/api](https://reader.gorillab.co/api)\n- Scraper Admin: [https://staging.reader.gorillab.co/admin](https://reader.gorillab.co/admin)\n\n### Production\n\nReader web app will be lived at [https://reader.gorillab.co](https://reader.gorillab.co)\n\n## Product Roadmap\n\nCheck this [GitHub Board](https://github.com/gorillab/reader/projects/1) for Reader's roadmap.\n\n## Gorillab Team\n\nOur members are on GitHub:\n\n- [Chau Duong](https://github.com/orgs/gorillab/people/chauduong1192)\n- [Khang Huynh](https://github.com/orgs/gorillab/people/khanghuynh92)\n- [Phat Pham](https://github.com/orgs/gorillab/people/phatpham9)\n- [Phu Tang](https://github.com/orgs/gorillab/people/tangkhanhphu)\n\nGorillab | [Website](https://gorillab.co) | [GitHub](https://github.com/gorillab) | [Say Hello!](mailto:hello@gorillab.co)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgorillab%2Freader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgorillab%2Freader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgorillab%2Freader/lists"}