{"id":19143214,"url":"https://github.com/devenes/node-js-dummy-test","last_synced_at":"2025-05-07T00:14:21.078Z","repository":{"id":38028334,"uuid":"489164879","full_name":"devenes/node-js-dummy-test","owner":"devenes","description":"Simple To Do application built with Node.js and Express.js that lets you add tasks on a single page, store new and finished tasks in different arrays. Containerized with Docker and tested with NPM through GitHub Actions pipeline.","archived":false,"fork":false,"pushed_at":"2023-03-21T21:01:35.000Z","size":1160,"stargazers_count":0,"open_issues_count":0,"forks_count":28,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-07T00:14:10.207Z","etag":null,"topics":["body-parser","container","containerization","docker","docker-image","ejs","embedded-javascript","embedded-javascript-templates","express-js","github-actions","javascript","js","node","node-ci","node-js","node-module","nodejs","npm","npm-test","pipeline"],"latest_commit_sha":null,"homepage":"https://devenes.github.io/node-js-dummy-test/","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/devenes.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-05-06T00:23:42.000Z","updated_at":"2022-06-11T09:49:18.000Z","dependencies_parsed_at":"2024-11-09T07:31:29.895Z","dependency_job_id":"c2e05fb5-adb4-4cd2-8e7b-f5b2c85a1846","html_url":"https://github.com/devenes/node-js-dummy-test","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/devenes%2Fnode-js-dummy-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devenes%2Fnode-js-dummy-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devenes%2Fnode-js-dummy-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devenes%2Fnode-js-dummy-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devenes","download_url":"https://codeload.github.com/devenes/node-js-dummy-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252788536,"owners_count":21804284,"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":["body-parser","container","containerization","docker","docker-image","ejs","embedded-javascript","embedded-javascript-templates","express-js","github-actions","javascript","js","node","node-ci","node-js","node-module","nodejs","npm","npm-test","pipeline"],"created_at":"2024-11-09T07:29:58.282Z","updated_at":"2025-05-07T00:14:21.057Z","avatar_url":"https://github.com/devenes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- \u003cdiv align=\"center\" id=\"top\"\u003e \n  \u003cimg src=\"./.github/app.gif\" alt=\"To Do Web App served with Node.js and Express.js\" /\u003e\n\n  \u0026#xa0;\n\n\u003c/div\u003e --\u003e\n\n\u003ch1 align=\"center\"\u003eTo Do Web App served with Node.js and Express.js\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Badge\" src=\"https://github.com/devenes/node-js-dummy-test/actions/workflows/node.js.yml/badge.svg\"\u003e\n  \u003cimg alt=\"Badge\" src=\"https://github.com/devenes/node-js-dummy-test/actions/workflows/dockerx.yml/badge.svg\"\u003e\n  \u003cimg alt=\"Badge\" src=\"https://github.com/devenes/node-js-dummy-test/actions/workflows/node.js.scan.yml/badge.svg\"\u003e\n  \u003cimg alt=\"Badge\" src=\"https://github.com/npm/cli/actions/workflows/ci.yml/badge.svg\"\u003e\n  \u003cimg alt=\"Github top language\" src=\"https://img.shields.io/github/languages/top/devenes/node-js-dummy-test?color=yellow\"\u003e\n  \u003cimg alt=\"Github language count\" src=\"https://img.shields.io/github/languages/count/devenes/node-js-dummy-test?color=red\"\u003e\n  \u003cimg alt=\"Repository size\" src=\"https://img.shields.io/github/repo-size/devenes/node-js-dummy-test?color=orange\"\u003e\n  \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/devenes/node-js-dummy-test?color=purple\"\u003e\n  \u003c!-- \u003cimg alt=\"Github issues\" src=\"https://img.shields.io/github/issues/devenes/node-js-dummy-test?color=56BEB8\" /\u003e --\u003e\n  \u003c!-- \u003cimg alt=\"Github forks\" src=\"https://img.shields.io/github/forks/devenes/node-js-dummy-test?color=56BEB8\" /\u003e --\u003e\n  \u003c!-- \u003cimg alt=\"Github stars\" src=\"https://img.shields.io/github/stars/devenes/node-js-dummy-test?color=56BEB8\" /\u003e --\u003e\n\u003c/p\u003e\n\n\u003c!-- Status --\u003e\n\n\u003c!-- \u003ch4 align=\"center\"\u003e \n\t🚧  Dummy Nodejs Todo 🚀 Under construction...  🚧\n\u003c/h4\u003e \n\n\u003chr\u003e --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#dart-about\"\u003eAbout\u003c/a\u003e \u0026#xa0; | \u0026#xa0; \n  \u003ca href=\"#sparkles-features\"\u003eFeatures\u003c/a\u003e \u0026#xa0; | \u0026#xa0;\n  \u003ca href=\"#rocket-technologies\"\u003eTechnologies\u003c/a\u003e \u0026#xa0; | \u0026#xa0;\n  \u003ca href=\"#white_check_mark-requirements\"\u003eRequirements\u003c/a\u003e \u0026#xa0; | \u0026#xa0;\n  \u003ca href=\"#checkered_flag-starting\"\u003eStarting\u003c/a\u003e \u0026#xa0; | \u0026#xa0;\n  \u003ca href=\"#memo-license\"\u003eLicense\u003c/a\u003e \u0026#xa0; | \u0026#xa0;\n  \u003ca href=\"https://github.com/devenes\" target=\"_blank\"\u003eAuthor\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n## :dart: About ##\n\nSimple To Do application built with Node.js and Express.js that lets you add tasks on a single page, store new and finished tasks in different arrays. Containerized with Docker and tested with NPM through GitHub Actions pipeline.\n## :sparkles: Features ##\n\n:heavy_check_mark: **Add tasks** \\\n:heavy_check_mark: **Store tasks** \\\n:heavy_check_mark: **Delete tasks** \n\n## :rocket: Technologies ##\n\nThe following tools were used in this project:\n\n- [Node.js](https://nodejs.org/en/)\n- [Javascript](https://www.javascript.com/)\n- [Express.js](https://expressjs.com/)\n- [Docker](https://www.docker.com/)\n- [NPM](https://www.npmjs.com/)\n- [Body-parser](https://www.npmjs.com/package/body-parser)\n- [EJS](https://www.npmjs.com/package/ejs)\n- [CSS](https://www.w3schools.com/css/default.asp)\n\n## Embedded Javascript\n\nEJS simply stands for Embedded Javascript. It is a simple templating language/engine that lets its user generate HTML with plain javascript. EJS is mostly useful whenever you have to output HTML with a lot of javascript. EJS is a simple templating language that lets you generate HTML markup with plain JavaScript. No religiousness about how to organize things. No reinvention of iteration and control-flow.\n\n## Body-Parser\n\nBody-Parser is the Node. js body parsing middleware. It is responsible for parsing the incoming request bodies in a middleware before you handle it. This extracts the entire body portion of an incoming request stream and exposes it on req.body\n\n## :white_check_mark: Requirements ##\n\nBefore starting :checkered_flag:, you need to have [Git](https://git-scm.com) and [Node](https://nodejs.org/en/) installed.\n\n## Output\n\n![png](./readme/todo.jpg)\n\n\n## :checkered_flag: Starting ##\n\n```bash\n# Clone this project\ngit clone https://github.com/devenes/node-js-dummy-test\n\n# Access\ncd node-js-dummy-test\n\n# install all needed dependencies\nnpm install\n\n# Start the app in the browser\nnpm start\n\n# The server will initialize in the \u003chttp://localhost:3000\u003e\n```\n\n![start](./readme/start.jpg)\n\n\n## Test App\n\nRun \u003ccode\u003e npm test \u003c/code\u003e to run the tests\n\n![test](./readme/test.jpg)\n\n## Build Docker Image with Dockerfile\n\nUse the following commands in your `Dockerfile` to build a Docker image:\n\n```dockerfile\nFROM node:16-alpine\nWORKDIR /app\nCOPY package*.json .\nRUN npm install\nCOPY . .\nEXPOSE 3000\nCMD [\"npm\", \"start\"]\n```\n\n\n## Containerization with Docker using GitHub Actions\n\nCreate your own GitHub Actions workflow to build your Docker image and push it to DockerHub. Name your workflow file as \u003ccode\u003e dockerx.yml \u003c/code\u003e and add the following steps:\n\n```yml\nname: Docker Deployment\n\non:\n  push:\n    branches:\n      - \"release\"\n\n  pull_request:\n    branches:\n      - \"release\"\n\njobs:\n  dockerx:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v1\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v1\n\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_PASSWORD }}\n\n      - name: Build and push\n        uses: docker/build-push-action@v2\n        with:\n          push: true\n          tags: ${{ secrets.DOCKERHUB_USERNAME }}/todo-nodejs-vx:${{github.run_number}}\n```\n\n## Test Your Code with GitHub Actions\n\nCreate your own GitHub Actions workflow to test your code. Name your workflow file as \u003ccode\u003e node.js.yml \u003c/code\u003e and add the following steps:\n\n```yml\nname: Node.js CI Test\n\non:\n  push:\n    branches:\n      - \"*\"\n\n  pull_request:\n    branches:\n      - \"*\"\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [12.x, 14.x, 16.x]\n\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v3\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: \"npm\"\n\n      - run: npm ci\n\n      - run: npm run build --if-present\n\n      - run: npm test\n```\n\n## Resources\n\n- [Using workflow run logs](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs)\n\n- [Understanding GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions)\n\n- [Node.js](https://www.yusufsezer.com.tr/node-js-npm/)\n\n- [Todo App with Node.js](https://medium.com/@atingenkay/creating-a-todo-app-with-node-js-express-8fa51f39b16f)\n\n- [npm-run-script](https://docs.npmjs.com/cli/v8/commands/npm-run-script)\n\n- [npm-test](https://docs.npmjs.com/cli/v8/commands/npm-test)\n\n- [npm](https://www.npmjs.com/)\n\n\n## :memo: License ##\n\nThis project is under license from Apache 2.0. For more details, see the [LICENSE](LICENSE) file.\n\n\nMade with :heart: by \u003ca href=\"https://github.com/devenes\" target=\"_blank\"\u003edevenes\u003c/a\u003e\n\n\u0026#xa0;\n\n\u003ca href=\"#top\"\u003e⬆️ Back to top\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevenes%2Fnode-js-dummy-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevenes%2Fnode-js-dummy-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevenes%2Fnode-js-dummy-test/lists"}