{"id":20840500,"url":"https://github.com/ervinteoh/demo-flask-login","last_synced_at":"2026-04-13T19:31:52.404Z","repository":{"id":247320273,"uuid":"579055700","full_name":"ervinteoh/demo-flask-login","owner":"ervinteoh","description":"Flask Login demonstrates an authentication system on a website with Flask, TailwindCSS and PostgreSQL.","archived":false,"fork":false,"pushed_at":"2023-01-25T02:38:48.000Z","size":6274,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-10-11T11:34:15.733Z","etag":null,"topics":["docker","flask","flask-sqlalchemy","javascript","jinja","postgresql","python","railway","render","tailwind-css","webpack"],"latest_commit_sha":null,"homepage":"https://demo-flask-login.onrender.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ervinteoh.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-16T14:48:09.000Z","updated_at":"2023-01-24T14:08:09.000Z","dependencies_parsed_at":"2024-07-08T04:25:52.694Z","dependency_job_id":"89b0b604-9305-4e34-98a0-b7395df63c05","html_url":"https://github.com/ervinteoh/demo-flask-login","commit_stats":null,"previous_names":["ervinteoh/demo-flask-login"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ervinteoh/demo-flask-login","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ervinteoh%2Fdemo-flask-login","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ervinteoh%2Fdemo-flask-login/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ervinteoh%2Fdemo-flask-login/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ervinteoh%2Fdemo-flask-login/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ervinteoh","download_url":"https://codeload.github.com/ervinteoh/demo-flask-login/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ervinteoh%2Fdemo-flask-login/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31768636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["docker","flask","flask-sqlalchemy","javascript","jinja","postgresql","python","railway","render","tailwind-css","webpack"],"created_at":"2024-11-18T01:16:39.067Z","updated_at":"2026-04-13T19:31:52.381Z","avatar_url":"https://github.com/ervinteoh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 --\u003e\r\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\r\n\r\n\r\n\r\n\u003c!-- PROJECT SHIELDS --\u003e\r\n\u003c!--\r\n*** I'm using markdown \"reference style\" links for readability.\r\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\r\n*** See the bottom of this document for the declaration of the reference variables\r\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\r\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\r\n--\u003e\r\n[![Contributors][contributors-shield]][contributors-url]\r\n[![Forks][forks-shield]][forks-url]\r\n[![Stargazers][stars-shield]][stars-url]\r\n[![Issues][issues-shield]][issues-url]\r\n[![MIT License][license-shield]][license-url]\r\n[![LinkedIn][linkedin-shield]][linkedin-url]\r\n\r\n\r\n\r\n\u003c!-- PROJECT LOGO --\u003e\r\n\u003cbr /\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/ervinteoh/demo-flask-login\"\u003e\r\n    \u003cimg src=\"images/logo.svg\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\r\n  \u003c/a\u003e\r\n\r\n\u003ch3 align=\"center\"\u003eFlask Login\u003c/h3\u003e\r\n\r\n  \u003cp align=\"center\"\u003e\r\n    A demonstration of an authentication system on a website.\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://github.com/ervinteoh/demo-flask-login\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\r\n    \u003cbr /\u003e\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://demo-flask-login.onrender.com/\"\u003eView Demo\u003c/a\u003e\r\n    ·\r\n    \u003ca href=\"https://github.com/ervinteoh/demo-flask-login/issues\"\u003eReport Bug\u003c/a\u003e\r\n    ·\r\n    \u003ca href=\"https://github.com/ervinteoh/demo-flask-login/issues\"\u003eRequest Feature\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n\r\n\r\n\u003c!-- TABLE OF CONTENTS --\u003e\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\r\n  \u003col\u003e\r\n    \u003cli\u003e\r\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\r\n      \u003cul\u003e\r\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\r\n      \u003c/ul\u003e\r\n    \u003c/li\u003e\r\n    \u003cli\u003e\r\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\r\n      \u003cul\u003e\r\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\r\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\r\n      \u003c/ul\u003e\r\n    \u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\r\n  \u003c/ol\u003e\r\n\u003c/details\u003e\r\n\r\n\r\n\r\n\u003c!-- ABOUT THE PROJECT --\u003e\r\n## About The Project\r\n\r\n[![Product Name Screen Shot][product-screenshot]](https://demo-flask-login.onrender.com/)\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n### Built With\r\n\r\n[![Python][Python-badge]][Python-url]\r\n[![JavaScript][JavaScript-badge]][JavaScript-url]\r\n[![Flask][Flask-badge]][Flask-url]\r\n[![TailwindCSS][TailwindCSS-badge]][TailwindCSS-url]\r\n[![Webpack][Webpack-badge]][Webpack-url]\r\n[![PostgreSQL][PostgreSQL-badge]][PostgreSQL-url]\r\n[![GitHub Actions][GitHubActions-badge]][GitHubActions-url]\r\n[![Docker][Docker-badge]][Docker-url]\r\n[![Render][Render-badge]][Render-url]\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- GETTING STARTED --\u003e\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n* Node Package Management\r\n  ```sh\r\n  npm install npm@latest -g\r\n  ```\r\n* Python\r\n\r\n### Installation\r\n\r\n1. Clone the repo\r\n   ```sh\r\n   git clone https://github.com/ervinteoh/demo-flask-login.git\r\n   ```\r\n2. Install NPM packages\r\n   ```sh\r\n   npm ci\r\n   ```\r\n3. Build Static Files\r\n   ```sh\r\n   npm run build\r\n   ```\r\n4. Make a copy of the file `.env.example` and rename it to `.env`\r\n5. Fill in the missing environmental variables in `.env` file\r\n6. Install package requirements\r\n   ```sh\r\n   pip install -r requirements.txt\r\n   ```\r\n7. Database Migration\r\n   ```sh\r\n   flask db upgrade\r\n   ```\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- USAGE EXAMPLES --\u003e\r\n## Usage\r\n\r\nStart the web application by simply running the command below.\r\n```sh\r\nflask run\r\n```\r\n\r\nTo run the web application in debug mode run the following command instead.\r\n```sh\r\nexport FLASK_DEBUG=1\r\nflask run\r\n```\r\n\r\nUse the following command to find out more about the flask command line interface.\r\n```sh\r\nflask --help\r\n```\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- ROADMAP --\u003e\r\n## Roadmap\r\n\r\n- [x] Milestone 1\r\n- [ ] Milestone 2\r\n- [ ] Milestone 3\r\n\r\nSee the [open issues](https://github.com/ervinteoh/demo-flask-login/issues) for a full list of proposed features (and known issues).\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\u003c!-- LICENSE --\u003e\r\n## License\r\n\r\nDistributed under the MIT License. See `LICENSE` for more information.\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- CONTACT --\u003e\r\n## Contact\r\n\r\nJie Sheng Teoh (Ervin) - teohjies@gmail.com\r\n\r\nProject Link: [https://github.com/ervinteoh/demo-flask-login](https://github.com/ervinteoh/demo-flask-login)\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- ACKNOWLEDGMENTS --\u003e\r\n## Acknowledgments\r\n\r\n* [README Template](https://github.com/othneildrew/Best-README-Template)\r\n* [Freepik Illustrations](https://www.freepik.com/search?author=55705010\u0026authorSlug=bs_k1d\u0026format=author)\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n\r\n\r\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\r\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\r\n[contributors-shield]: https://img.shields.io/github/contributors/ervinteoh/demo-flask-login.svg?style=for-the-badge\r\n[contributors-url]: https://github.com/ervinteoh/demo-flask-login/graphs/contributors\r\n[forks-shield]: https://img.shields.io/github/forks/ervinteoh/demo-flask-login.svg?style=for-the-badge\r\n[forks-url]: https://github.com/ervinteoh/demo-flask-login/network/members\r\n[stars-shield]: https://img.shields.io/github/stars/ervinteoh/demo-flask-login.svg?style=for-the-badge\r\n[stars-url]: https://github.com/ervinteoh/demo-flask-login/stargazers\r\n[issues-shield]: https://img.shields.io/github/issues/ervinteoh/demo-flask-login.svg?style=for-the-badge\r\n[issues-url]: https://github.com/ervinteoh/demo-flask-login/issues\r\n[license-shield]: https://img.shields.io/github/license/ervinteoh/demo-flask-login.svg?style=for-the-badge\r\n[license-url]: https://github.com/ervinteoh/demo-flask-login/blob/master/LICENSE.txt\r\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\r\n[linkedin-url]: https://linkedin.com/in/ervinteoh\r\n[product-screenshot]: images/screenshot.png\r\n[Python-badge]: https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54\r\n[Python-url]: https://www.python.org/\r\n[JavaScript-badge]: https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge\u0026logo=javascript\u0026logoColor=%23F7DF1E\r\n[JavaScript-url]: https://www.javascript.com/\r\n[Flask-badge]: https://img.shields.io/badge/flask-%23000.svg?style=for-the-badge\u0026logo=flask\u0026logoColor=white\r\n[Flask-url]: https://flask.palletsprojects.com/\r\n[TailwindCSS-badge]: https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white\r\n[TailwindCSS-url]: https://tailwindcss.com/\r\n[Webpack-badge]: https://img.shields.io/badge/webpack-%238DD6F9.svg?style=for-the-badge\u0026logo=webpack\u0026logoColor=black\r\n[Webpack-url]: https://webpack.js.org/\r\n[PostgreSQL-badge]: https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\r\n[PostgreSQL-url]: https://www.postgresql.org/\r\n[GitHubActions-badge]: https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white\r\n[GitHubActions-url]: https://github.com/features/actions\r\n[Docker-badge]: https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\r\n[Docker-url]: https://www.docker.com/\r\n[Render-badge]: https://img.shields.io/badge/Render-%46E3B7.svg?style=for-the-badge\u0026logo=render\u0026logoColor=white\r\n[Render-url]: https://render.com/\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fervinteoh%2Fdemo-flask-login","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fervinteoh%2Fdemo-flask-login","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fervinteoh%2Fdemo-flask-login/lists"}