{"id":26659030,"url":"https://github.com/denisecase/web-app-2020-fall","last_synced_at":"2025-04-11T14:10:13.559Z","repository":{"id":55439049,"uuid":"305763665","full_name":"denisecase/web-app-2020-fall","owner":"denisecase","description":"Example of a collaborative MVC web app built with the Express web framework for Node.js.","archived":false,"fork":false,"pushed_at":"2024-10-14T23:17:21.000Z","size":1004,"stargazers_count":0,"open_issues_count":1,"forks_count":26,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-25T10:17:32.634Z","etag":null,"topics":["codacy-badge","css","ejs","eslint","express","heroku","html","javascript","mvc","node","postgresql","prettier","sequelize","sqlite3","webapps"],"latest_commit_sha":null,"homepage":"https://web-app-2020-fall.herokuapp.com/","language":"JavaScript","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/denisecase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-20T16:08:17.000Z","updated_at":"2023-05-28T09:32:42.000Z","dependencies_parsed_at":"2022-08-15T00:20:28.399Z","dependency_job_id":null,"html_url":"https://github.com/denisecase/web-app-2020-fall","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/denisecase%2Fweb-app-2020-fall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fweb-app-2020-fall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fweb-app-2020-fall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisecase%2Fweb-app-2020-fall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/denisecase","download_url":"https://codeload.github.com/denisecase/web-app-2020-fall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248413874,"owners_count":21099373,"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":["codacy-badge","css","ejs","eslint","express","heroku","html","javascript","mvc","node","postgresql","prettier","sequelize","sqlite3","webapps"],"created_at":"2025-03-25T10:17:36.577Z","updated_at":"2025-04-11T14:10:13.526Z","avatar_url":"https://github.com/denisecase.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# web-app-2020-fall\n\n[![Build Status](https://travis-ci.org/denisecase/web-app-2020-fall.svg?branch=main)](https://travis-ci.org/denisecase/web-app-2020-fall)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/dabde95955984dd08493709c421c7da6)](https://app.codacy.com/gh/denisecase/web-app-2020-fall?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=denisecase/web-app-2020-fall\u0026utm_campaign=Badge_Grade)\n![GitHub repo size](https://img.shields.io/github/repo-size/denisecase/web-app-2020-fall?style=flat)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n[![Code Style](https://badgen.net/badge/code%20style/airbnb/ff5a5f?icon=airbnb)](https://github.com/airbnb/javascript)\n[![Known Vulnerabilities](https://snyk.io/test/github/denisecase/web-app-2020-fall/badge.svg?targetFile=package.json)](https://snyk.io/test/github/denisecase/web-app-2020-fall?targetFile=package.json)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors-)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n\u003e Example of a collaborative MVC web app built with the Express web framework for Node.js.\n\n## Links\n\n- [Webapp on Heroku](https://web-app-2020-fall.herokuapp.com/)\n- [Source](https://github.com/denisecase/web-app-2020-fall)\n\n## Set Up Machine for Development\n\nFirst, set up your Windows machine for development - follow the instructions at [Windows Setup For Developers (The Basics)](https://github.com/denisecase/windows-setup). Be able to right-click your project folder and \"Open PowerShell here as Administrator\".\n\n## Prerequisites\n\n- Node.js (comes with npm)\n- Git\n- TortoiseGit\n- VS Code\n- VS Code Extension - [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)\n- [DB Browser for SQLite](https://sqlitebrowser.org/dl/), e.g., standard for 64 Windows. Save the .msi file and double-click to run it.\n\n```PowerShell\nchoco install nodejs -y\nchoco install git -y\nchoco install tortoisegit -y\nchoco install vscode -y\nchoco upgrade all -y\nrefreshenv\n```\n\n## Prerequisites for Publishing\n\n- [Heroku CLI - to publish](https://devcenter.heroku.com/articles/getting-started-with-nodejs#set-up)\n- [Heroku login](https://id.heroku.com/login)\n- [PostgreSQL local install](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads)\n\nCreate Heroku app with Heroku Postgres (Hobby Dev - free) add-on.\n\n## Background - How to Start a New App like this\n\n- Run Express-generator with EJS (dynamically create pages with HTML \u0026 embedded JS)\n- Update the JavaScript - change var to const, use async/await\n- Change package.json versions to \"latest\" - until you have issues, then freeze a version\n- Add folders to organize your code\n- Update to use Express app4 updates - stay current\n- [Set up ESLint and Prettier](https://sourcelevel.io/blog/how-to-setup-eslint-and-prettier-on-node)\n\n## Build Responsive Apps (for all screen sizes)\n\n- We choose [MDB 5](https://mdbootstrap.com/docs/standard/) (Material Design Bootstrap 5 - no jQuery)\n\n## Add App-Specific Resources\n\nFollow conventions - use standard lowercase, no spaces, follow naming patterns\n\nEnable standard CRUD options (create, read, update, delete)\n\n- Make a model \u0026 seed some data on startup\n- Route requests to specific routers\n- Route CRUD requests to controller functions\n- Create standard views for the resource\n\n1. create.ejs\n2. delete.ejs\n3. details.ejs\n4. edit.ejs\n5. index.ejs\n\nAdd a standard comment block at the top of each file.\n\nAdd yourself and email as the author (follow examples).\n\n## How to Contribute\n\n### First time only\n\n1. Click the fork icon on this repo to fork it into your own cloud account.\n2. Clone your new cloud repo down to your machine.\n\n### Step 1 - Get fresh code\n\n1. Pull fresh code from shared cloud repo.\n2. Update your cloud repo (git add and push).\n3. Install dependencies (assume there have been changes).\n4. Start the app.\n5. Open your browser to verify everything runs.\n\n```Powershell\ngit pull \"https://github.com/denisecase/web-app-2020-fall.git\"\ngit add .\ngit push\nnpm install\nnpm run start\n```\n\n### Step 2 - Make your contributions\n\nAs you test your code, format it with Prettier and\nlint (clean it up) with ESLint.\nSee scripts in package.json.\n\n1. While code is fresh, make your local edits.\n2. Verify the app still runs \u0026 standarize your code.\n\n```PowerShell\nnpm install\nnpm run start\n\nnpm run prettier\nnpm run lint\nnpm run lint-fix\n```\n\nFix your code as suggested by the linter.\n\n### Step 3 - Save and share your work\n\n1. Git add \u0026 git commit locally.\n2. Git push to the origin.\n3. In your updated GitHub repo look for \"Pull Request\".\n4. Follow instructions (click the green buttons) to prepare a \"pull request\" into the main repo.\n\n### Step 4 - Refresh before making new contributions\n\n1. Git pull from shared repo to your laptop\n2. Git add any new files from root folder on down (git add .)\n3. Git push to your origin repo (your forked repo in the cloud)\n\n```Powershell\ngit pull \"https://github.com/denisecase/web-app-2020-fall.git\"\ngit add .\ngit push\n```\n\n## Start Options\n\nStart the app by running npm run start.\nUntil error handling is complete, a clean shutdown is better.\nOnce error handling is complete, use npm run dev to start with nodemon.\n\n```PowerShell\nnpm run start\n```\n\nView the application locally at \u003chttp://localhost:3020/\u003e\n\n## Reference Command Examples\n\nSequelize commands\n\n```PowerShell\nnpx sequelize-cli db:migrate\n```\n\nPostgreSQL commands (for Production Database)\n\n```PowerShell\nStart-Process 'C:\\Program Files\\PostgreSQL\\13\\scripts\\runpsql.bat'\npsql \"${DATABASE_URL}\"\n\n```\n\nHeroku commands (for production reference)\n\n```PowerShell\nheroku login\nheroku addons\n\nheroku addons:create heroku-postgresql:hobby-dev\nheroku ps:scale web=1 --app web-app-2020-fall\n\nheroku config --app web-app-2020-fall\nheroku pg:info --app web-app-2020-fall\nheroku pg:diagnose --app web-app-2020-fall\nheroku pg:psql postgresql-round-39059 --app web-app-2020-fall\n\nheroku run sequelize --app web-app-2020-fall\nheroku run sequelize db:migrate --app web-app-2020-fall\n\nheroku logs --app web-app-2020-fall --tail\nheroku open --app web-app-2020-fall\n```\n\n## Resources\n\nSecurity\n\n- [GitHub: Node.js Best Practices](https://github.com/goldbergyoni/nodebestpractices)\n- [US Gov: Before You Ship - Static Security Analysis](https://before-you-ship.18f.gov/security/static-analysis/)\n- [OWASP: Node Security Cheatsheet](https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html)\n- [Express: Security Best Practices](https://expressjs.com/en/advanced/best-practice-security.html)\n- [ES Lint: Config](https://github.com/EvgenyOrekhov/eslint-config-hardcore)\n\nMozilla Observatory (Live Security Check)\n\n- Test any app with [Mozilla Observatory (security check)](https://observatory.mozilla.org/)\n- Test our app with [Mozilla Observatory](https://observatory.mozilla.org/analyze/web-app-2020-fall.herokuapp.com)\n\nSequelize \u0026 PostgreSQL\n\n- [Getting Started with Sequelize and Postgres](https://dev.to/nedsoft/getting-started-with-sequelize-and-postgres-emp)\n- [Getting Started with Node, Express and PostgreSQL using Sequelize](https://morioh.com/p/fe03e5149f97)\n\nExpress\n\n- [MDN Web Docs - Express Web Framework](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs)\n\nEJS CRUD\n\n- [EJS CRUD tutorial](https://www.mynotepaper.com/nodejs-simple-crud-with-expressjs-and-mysql)\n- [EJS CRUD repo](https://github.com/mdobydullah/nodejs-crud-with-expressjs-mysql)\n\nDeploying on Heroku\n\n- [MDN Guide to Publishing with Heroku](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/deployment)\n- [Provising Heroku Postgres](https://devcenter.heroku.com/articles/heroku-postgresql#provisioning-heroku-postgres)\n\nAuthentication \u0026 Authorization\n\n- [NWMSU GDP1 - The Hunt](https://github.com/Krishna-Koyyalamudi/The-Hunt)\n- [ISA NWMSU Repo (GDP 2 Team 4 Section 2)](https://github.com/MAHALAKSHMIKONGARI/GDP_Team-4_Section-2) - example using passport and passport-jwt for user authentication and authorization\n- [ISA NWMSU App](http://isanwmsu.herokuapp.com/)\n\n# Contribute\n\nSee our [Contributing Guide](./CONTRIBUTING.md) for instructions on how to contribute code.\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/denisecase\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13016516?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDenise Case\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=denisecase\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=denisecase\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/StephenBurke\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/42814417?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStephen Burke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=StephenBurke\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/lrfares1996\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/54172122?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLindsey Fares\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=lrfares1996\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/bben6087\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/54418954?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBlake Bennett\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=bben6087\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/SRitt12\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/54680543?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSam Ritter\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=SRitt12\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/cherryvarsha99\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/70028775?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evarsha vellanki\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=cherryvarsha99\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/shivani-ta\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/69983357?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eshivani tangellapally\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=shivani-ta\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/chanWright\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/25439117?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChandler Wright\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=chanWright\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Charles-Hoot\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/32575563?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCharles-Hoot\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=Charles-Hoot\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/zachariahwatson\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/54414185?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZach Watson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=zachariahwatson\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/praneethvallabhaneni\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/71108379?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003epraneethvallabhaneni\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=praneethvallabhaneni\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/PrashansaAmbarkar\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/70028754?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePrashansaAmbarkar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=PrashansaAmbarkar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/JackWBeaver\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/54329775?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJack Beaver\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=JackWBeaver\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Srivasavi-vipparla\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/69984398?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSri Vasavi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=Srivasavi-vipparla\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/FelipeGHB\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/46767469?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFelipeGHB\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=FelipeGHB\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/KarepeN\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/70028952?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKarepeN\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=KarepeN\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/kvohra93\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/70285661?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKunal\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=kvohra93\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.codacy.com/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/23704769?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCodacy Badger\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=codacy-badger\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://snyk.io/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/19733683?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSnyk bot\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/denisecase/web-app-2020-fall/commits?author=snyk-bot\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Your contributions are appreciated!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisecase%2Fweb-app-2020-fall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenisecase%2Fweb-app-2020-fall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisecase%2Fweb-app-2020-fall/lists"}