{"id":27403339,"url":"https://github.com/kaushiksk/read-it-later","last_synced_at":"2026-05-08T01:43:41.503Z","repository":{"id":53541313,"uuid":"104062003","full_name":"kaushiksk/read-it-later","owner":"kaushiksk","description":"A news aggregator and read-it-later web app built using flask and mysql","archived":false,"fork":false,"pushed_at":"2021-03-25T13:01:17.000Z","size":3734,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-04-24T23:10:52.986Z","etag":null,"topics":["bookmark","flask","mysql","news-aggregator","newspaper"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaushiksk.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":"2017-09-19T10:39:22.000Z","updated_at":"2021-03-25T12:59:50.000Z","dependencies_parsed_at":"2022-08-24T18:50:37.102Z","dependency_job_id":null,"html_url":"https://github.com/kaushiksk/read-it-later","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushiksk%2Fread-it-later","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushiksk%2Fread-it-later/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushiksk%2Fread-it-later/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaushiksk%2Fread-it-later/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaushiksk","download_url":"https://codeload.github.com/kaushiksk/read-it-later/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824693,"owners_count":21167343,"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":["bookmark","flask","mysql","news-aggregator","newspaper"],"created_at":"2025-04-14T04:49:17.012Z","updated_at":"2026-05-08T01:43:36.464Z","avatar_url":"https://github.com/kaushiksk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# read-it-later\nA news aggregator and read-it-later web app built using flask and mysql.\nThe idea is inspired from this\n[post](https://github.com/shekhargulati/52-technologies-in-2016/tree/master/16-newspaper)\n\n\n## Directory Structure \n```\n├── db\n├── screenshots\n├── static\n│   ├── css\n│   ├── fonts\n│   ├── img\n│   └── js\n├── templates\n│   └── includes\n├── app.py\n├── forms.py\n├── LICENSE\n├── posts.py\n├── README.md\n├── requirements.txt\n└── utils.py\n\n```\n\n|folder|contents|\n|-----|--------|\n|db| queires, procedures and triggers|\n|static| css, js, and other static files for the web app|\n|screenshots| screenshots of various pages on the web app|\n|templates| HTML templates used in the web app|\n\n---\n|script|contents|\n|-----|--------|\n|app.py| main server code with all the routes|\n|forms.py| forms defined using WTForms|\n|posts.py| article parsing code|\n|utils.py| additional functions|\n\n## Installation\n\n`$ git clone git@github.com:kaushiksk/read-it-later.git \u0026\u0026 cd read-it-later`\n\nnewspaper requires nltk==2.0.5. See [here](https://stackoverflow.com/questions/46977498/urllib2-httperror-http-error-403-ssl-is-required-when-installing-nltk-2-0-5) for instructions on how to install. \nMake sure you have mysql, [mysql-dev](https://stackoverflow.com/questions/14604228/mysql-h-file-cant-be-found#14604638), [libxmldev](https://stackoverflow.com/questions/15759150/src-lxml-etree-defs-h931-fatal-error-libxml-xmlversion-h-no-such-file-or-di#15761014) installed. \n`$ pip install -r requirements.txt --user`\n\nNote that you will need to have gcc installed.\n\nNow run all the scripts in the `db/` folder.\n\nChange the the `USERNAME`, `PASSWORD` variables in `app.py` to your mysql\nusername and password.\n\nStart the server by running the following in your terminal: `$ python app.py`\n\n## Development Notes\n\n### DB Side\n - [x] MySQL procedure for validation of signup data\n - [x] Clearly define all tables, normalize, foreign keys etc.\n - [x] Procedure for entering new post/bookmark and performing all the checks\n - [x] Archive bookmark (Mark as read)\n - [x] Delete bookmark\n \n### Backend \n - [x] Setup flask server\n - [x] `USED WTFORMs`Check type of error and display it to user. Currently I am just posting a \"Invalid\n   Field\" message. If usernames clash, display that as error message to user.\n - [x] Article parsing using newspaper\n - [x] Parse long text wrap at 150 characters but include last word.\n - [x] Multi line strings for queries using triple quotes\n\n### Frontend\n - [x] Remove those random text boxes in index page. Add Bootstrap tiles or some\n   boxes.\n - [x] Add SignIn page\n - [x] Revamp UI theme(FLAT-UI)\n - [x] Template for user and public dashboard\n - [x] Form for adding new bookmark\n - [x] Sidebar for choosing month, category\n - [x] Jquery-alert pugin for delete/archive confirmation\n - [x] Animate.css for fadeIn animations\n - [x] Font-Awesome icons\n - [x] Form for custom query in dashboard\n - [x] Archive Bookmark\n - [x] Delete Bookmark\n - [x] Add to my bookmarks in public dashboard\n - [x] Dynamically load content while retaining custom query form \n - [x] Interactive charts with Chart.js\n\n### Future\n - [ ] Tag Cloud. [JQCloud](http://primegap.net/2011/03/04/jqcloud-a-jquery-plugin-to-build-neat-word-clouds/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaushiksk%2Fread-it-later","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaushiksk%2Fread-it-later","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaushiksk%2Fread-it-later/lists"}