{"id":13300781,"url":"https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify","last_synced_at":"2025-03-10T12:31:55.015Z","repository":{"id":39698114,"uuid":"318419456","full_name":"matt212/Nodejs_Postgresql_VanillaJS_Fastify","owner":"matt212","description":"Config based Node.js and PostgreSQL  Web App Boilerplate/Scaffolding   with custom RBAC and stream-based CSV upload and download mechanics. Auto generated Modules through superAdmin panel with features like for API documentation - swagger , for Automation test stack - Mocha and    more. Please refer Solution statement from README below.","archived":false,"fork":false,"pushed_at":"2024-08-24T16:28:06.000Z","size":441510,"stargazers_count":10,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-24T21:54:24.891Z","etag":null,"topics":["api","boilerplate","docker","fastify","jenkins-pipeline","mocha-chai","mocha-tests","multi-column-selection-predicates","nodejs","nodejs-api","pivot-tables","postgresql","redis","streaming-csv","swagger"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/matt212.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":"2020-12-04T06:00:46.000Z","updated_at":"2024-08-24T16:14:52.000Z","dependencies_parsed_at":"2023-01-16T16:01:09.847Z","dependency_job_id":"65a35352-d5d9-4711-9ee8-f617ca9e539e","html_url":"https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt212%2FNodejs_Postgresql_VanillaJS_Fastify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt212%2FNodejs_Postgresql_VanillaJS_Fastify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt212%2FNodejs_Postgresql_VanillaJS_Fastify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt212%2FNodejs_Postgresql_VanillaJS_Fastify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matt212","download_url":"https://codeload.github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242851746,"owners_count":20195713,"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":["api","boilerplate","docker","fastify","jenkins-pipeline","mocha-chai","mocha-tests","multi-column-selection-predicates","nodejs","nodejs-api","pivot-tables","postgresql","redis","streaming-csv","swagger"],"created_at":"2024-07-29T17:43:04.410Z","updated_at":"2025-03-10T12:31:50.001Z","avatar_url":"https://github.com/matt212.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Badges\n[![Node.js Postgres Vanilla Fastify CI](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/actions/workflows/node.js.yml/badge.svg)](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/actions/workflows/node.js.yml)\n\n[![CodeQL](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/actions/workflows/codeql-analysis.yml)\n\n[![GitHub Clones ](https://img.shields.io/badge/dynamic/json?color=success\u0026label=Clone\u0026query=count\u0026url=https://gist.githubusercontent.com/matt212/fff906f983d73f42eadc74ab93701a83/raw/clone.json\u0026logo=github)](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/actions/workflows/cloneCount.yml)\n\n [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/issues)\n\n\n### Tech stacks\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge\u0026logo=javascript\u0026logoColor=%23F7DF1E)\n![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n![Sequelize](https://img.shields.io/badge/Sequelize-52B0E7?style=for-the-badge\u0026logo=Sequelize\u0026logoColor=white)\n![Socket.io](https://img.shields.io/badge/Socket.io-black?style=for-the-badge\u0026logo=socket.io\u0026badgeColor=010101)\n![JWT](https://img.shields.io/badge/JWT-black?style=for-the-badge\u0026logo=JSON%20web%20tokens)\n![Mocha](https://img.shields.io/badge/-mocha-%238D6748?style=for-the-badge\u0026logo=mocha\u0026logoColor=white)\n![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge\u0026logo=swagger\u0026logoColor=white)\n\n\n\u003cdetails\u003e\n \u003csummary id=\"problem-statement\"\u003e🚄 Problem Statement \u003c/summary\u003e\u003cblockquote\u003e\n\n ![redlime](app/video/img/problem-statement.png)\n\u003c!--\u003ctable class=\"tg\"\u003e\n\u003cthead\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWho\u003cbr\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWho has the problem?\u003cbr\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003e Any Dev or Dev Team building project from Scratch or Migrating Existing Piece \u003cbr\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWhat\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWhat is the problem?\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eConventional scaffolding / boilerplate does not cater to all  Key outcomes pointers\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWhere\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWhen/Where the problem is occurring?\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eDuring any project execution stage and even in planning phase  Team Has to spend a lot time and energy to plan, discuss and execute the project key outcomes mentioned as part of *solution statement*  mentioned above and thus planning and execution are pain points.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eWhy\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003ewhy is it important to address?\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eIt is important to address because it would save time , energy of team members which in turn cascades  to finances, deadlines and other Factors.  \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n --\u003e\n \u003c/details\u003e\n\n\n\u003cdetails open\u003e\n\n\u003csummary id=\"project-statement\" href=\"#project-statement\"\u003e\n🚀 Solution Statement- Key Outcomes\n\u003c/summary\u003e\u003cblockquote\u003e\n   \n  \u003cdetails\u003e\n \u003csummary id=\"Objective\"\u003e🍨 Objective \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/objective.png)\n\n\u003c/details\u003e\n   \n\u003cdetails\u003e\n \u003csummary id=\"mandates\"\u003e🍰 Mandates \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/mandates.png)\n\n\u003c/details\u003e\n    \n\u003cdetails\u003e\n \u003csummary id=\"Conventional-Levels\"\u003e🍦 Features/Functionalities : Conventional Levels\u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/conventional.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n \u003csummary id=\"Advanced-Levels\"\u003e🍧 Features/Functionalities : Advanced Levels\u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/advanced.png)\n\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n \u003csummary id=\"scope-statement\"\u003e🎫 \n Scope Statement\n \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/Scope.png)\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary id=\"Platform-Setup\" href=\"#Platform-Setup\"\u003e\n📡  Platform Setup \n\u003c/summary\u003e\n\u003cblockquote\u003e\n   \n\u003cdetails\u003e\n\n\u003csummary id=\"sh-file-Setup\" \u003e\n🍕sh file Setup\n\u003c/summary\u003e\n\n\u003e *`chmod +x ./app/utils/serverSetup/primarySetup.sh `*  \n\n\u003e *`sed -i -e 's/\\r$//' ./app/utils/serverSetup/\u003e primarySetup.sh`*\n\n\u003e*`chmod +x ./app/utils/serverSetup/secondarySetup.sh`*\n\n\u003e*`sed -i -e 's/\\r$//' ./app/utils/serverSetup/secondarySetup.sh`*\n\n\u003e*`bash ./app/utils/serverSetup/primarySetup.sh`*\n\n   \n\n\u003e _`Please note if you have node/postgres/redis server installed in your instance/machine. Please comment the install information in primarySetup.sh file and then run this file`_\n\u003c/details\u003e\n  \n  \u003cdetails\u003e\n\u003csummary id=\"app-Setup\" \u003e\n🍤app Setup\n\u003c/summary\u003e\n  \n\u003e **node,postgres, redis and app dependencies  installation**\n\n\u003e*`bash ./app/utils/serverSetup/primarySetup.sh`*\n\n\u003e*`bash ./app/utils/serverSetup/secondarySetup.sh`*\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary id=\"mocha-test-cases\" \u003e\n🍔 mocha chai tests against 20,00,000 recordsets\n\u003c/summary\u003e\n\n\u003e _`npm run LoginEval or yarn LoginEval`_\n\n\u003e _`npm run ModuleEval or yarn ModuleEval`_\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary id=\"app-Run\" \u003e\n🍟 app Run\n\u003c/summary\u003e\n\n\u003e*`npm run app or yarn app `*\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n\u003csummary id=\"app-Usage\" \u003e\n🍩 app Usage\n\u003c/summary\u003e\n\n\u003e*`goto localhost:3012/employees`*\n\n\u003e*`username : krennic and  password:orson`*\n\n\u003e*`select birthdate from dropdown and select date range any from 1982 to till date`*\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary id=\"app-SuperAdmin-Usage\" \u003e\n 🍜 app SuperAdmin Usage\n\u003c/summary\u003e\n\n\u003e*`goto localhost:3012/black-squadron`*\n\n\u003e*`username : krennic and password:orson`*\n\n\u003e*`for any other controls other than textbox it is mandatory`*\n\n\u003e*`to enter PIPE \"|\" separator in textbox column for e.g genderid|gendername`*\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary id=\"app-API-Documentation-Usage(Swagger)\" \u003e\n 🍘 API Documentation Usage(Swagger)\n\u003c/summary\u003e\n\n\u003e*`goto localhost:3012/getAccessToken`*\n\n\u003e*`Click on Get AccessToken button and copy the newly generated Access Token`*\n\n\u003e*`goto localhost:3013/api-docs/`*\n\n\u003e*`Click on authorize and paste the access Token`*\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n\n\n\n\n\n\u003cdetails open\u003e\n \u003csummary id=\"walkthrough-section\"\u003e💈 Walkthroughs : Features/Functionalities \u003c/summary\u003e\n \u003cblockquote\u003e\n \u003cbr/\u003e\n\u003cdetails\u003e\n    \u003csummary\u003e🍇 Dynamic pivot operation from Postgres with highchart implementation (Redis Cached)\n\u003c/summary\u003e\n \u003cbr/\u003e\n \n https://user-images.githubusercontent.com/1698139/182132755-e19fdbb3-23f3-422e-ac54-4f2e78d3a2c3.mp4\n \n\u003c/details\u003e\n\n\u003cbr/\u003e\n\u003cdetails\u003e\n \u003csummary \u003e🍊 Node.js stream based CSV download for more than 2 million recordsets from PostgresSQL with socket.io as progress feature\u003c/summary\u003e\n\u003cbr/\u003e\n\nhttps://user-images.githubusercontent.com/1698139/182214015-847cced0-95a7-46ad-a9c2-c359e5dcb4de.mp4 \n\n\u003c/details\u003e\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n \u003csummary \u003e🍑 Automated Swagger for each Module created By build in scaffoding accessed at \n \u003cbr/\u003e http://localhost:3013/api-docs/ \u003c/summary\u003e\n\u003cbr/\u003e\n  \n  `yarn enable-swagger`\n  \n  https://user-images.githubusercontent.com/1698139/182231396-1a483aed-7856-4302-beba-2fd879ee87d0.mp4 \n\u003c/details\u003e\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n \u003csummary \u003e🍐 Basic dashboard operation\u003c/summary\u003e\n\u003cbr/\u003e\n\nhttps://user-images.githubusercontent.com/1698139/182218607-456a32d1-1239-4a98-b0a5-30ea2dc4da4a.mp4\n\n\u003c/details\u003e\n\u003cbr/\u003e\n\u003cdetails\u003e\n \u003csummary \u003e🍓 Boilerplate walkthrough with multi control(Radio and Checkbox-Data from respective db tables) with Automated mocha test Cases\u003c/summary\u003e\n\u003cbr/\u003e\n\n![redlime](app/video/gif/f.gif)\n\u003c/details\u003e\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n \u003csummary \u003e🍏 Boilerplate walkthrough with multi control(Radio-Data from respective db table) with Automated mocha test Cases\u003c/summary\u003e\n\u003cbr/\u003e\n\n![redlime](app/video/gif/e.gif)\n\n\u003c/details\u003e\n\u003cbr/\u003e\n\u003c/details\u003e\n\n\n\u003c/details\u003e\n\u003cdetails open\u003e\n\n\u003csummary id=\"project-timelines\" href=\"#project-timelines\"\u003e\n🤖 Deliverables Timeline\n\u003c/summary\u003e\u003cblockquote\u003e\n   \n  \u003cdetails\u003e\n \u003csummary id=\"Obj2022\"\u003e🥑 2022 \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/ph4.png)\n\n\u003c/details\u003e\n   \n\u003cdetails\u003e\n \u003csummary id=\"Obj2021\"\u003e🌽 2021 \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/ph3.png)\n\n\u003c/details\u003e\n    \n\u003cdetails\u003e\n \u003csummary id=\"Obj2020\"\u003e🍄 2020\u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/ph1.png)\n![redlime](app/video/img/ph2.png)\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n#### \n \u003cdetails\u003e\n \u003csummary id=\"release-section\"\u003e🍫 Releases\u003c/summary\u003e\u003cblockquote\u003e\n\n\n\n- ### `Release notes 23 July 2022`\n\n  \u003eOptimized Dynamic Multi Column , Multi Select  filter from 5 secs to 16 ms for 2   million rows . \n  \u003e[My stack overflow solution](https://stackoverflow.com/a/73085784/1333794)\n   \n\n\n- ### `Release notes 21 July 2022`\n\n  \u003ebase and pivot Operation optimized\n  \n  \u003eincremental load (pagination section loaded after report rendered) for base report\n  \n  \u003eincremental load (pagination section loaded after report rendered) for pivot report   \n\n\n- ### `Release notes 19 July 2022`\n\n  \u003egithub actions\n  \u003eIntegrated CI-workflows with redis, postgres for automation mocha test cases\n  \u003e\n  \u003e[Github Action - Automation mocha test cases](https://github.com/matt212/Nodejs_Postgresql_VanillaJS_Fastify/runs/7475512509?check_suite_focus=true )\n   \n- ### `Release notes 18 July 2022`\n\n  \u003eImplemented basic dark theme   \n\n\n- ### `Release notes 17 July 2022`\n\n  \u003eImplemented Redis based Server-Side Caching for Pivot Operations  \n\n\n- ### `Release notes 1 July 2022`\n\n\u003e **Superadmin scaffolding/ boilerplate Access URL**\n \u003e *http://localhost:3012/black-squadron*\n \n \u003e _`username : krennic and password:orson`_\n\n \u003e`for any other controls other than textbox it is mandatory `\n\n \u003e` to enter PIPE \"|\" separator in textbox column for e.g genderid|gendername` \n\n\n\n\n- ### `Release notes 11 Feb 2021`\n\n  \u003eboilerplate for multiselect integration with radio and checkboxes completed \n\n- ### `Release notes 09 Feb 2021`\n\n  \u003eApplied in  boilerplate multi and single select Dynamic SQLConstruct with 360 degree coverage \n\n- ### `Release notes 06 Feb 2021`\n\n  \u003efor boilerplate multi and single select static mapping for edit and default rendering case scenarios completed\n  \n- ### `Release notes 29 Jan 2021`\n\n  \u003evalidations applied for bolierplate dynamic radio button and checkboxes with \n\n- ### `Release notes 27 Jan 2021`\n\n  \u003eapplied multi control for radio scaffolding \n \n- ### `Release notes 20 Jan 2021`\n\n  \u003eFor rbac test cases modularized\n\n  \u003e `yarn mroleEval`\n\n  \u003e `yarn userroleEval`\n\n- ### `Release notes 9 Jan 2021`\n\n  \u003eFor rbac user-Role Mapping  module migrated to fastify with its 35 mocha chai test cases respectively \n\n  \u003e `yarn mroleEval`\n\n  \u003e `yarn userroleEval`\n\n- ### `Release notes 22 Dec 2020`\n  \u003eDynamic Bolierplate generation completed for dataType Strings , Integers and BigInt data types config based\n  \n  \u003eFor rbac modname,muser modules migrated to fastify with their respective 43 and 63 mocha chai test cases\n  \n  \u003eFor rbac role module migrated to fastify with its 43 mocha chai test cases\n  \u003e `yarn ModEval`\n  \u003e `yarn roleEval`\n \n- ### `Release notes 21 Dec 2020`\n  \u003e 73 **Modular** Mocha test cases against 20,00,000 recordset with 360 coverage including schema,NaN,Undefined,Multi Column Search,Multi Select,Pivot X and Y for pageSize and pageNo  payload Validations\n  \n  \u003e `yarn ModuleEval`\n\n- ### `Release notes 20 Dec 2020`\n  \u003e 73 **Modular** Mocha test cases against 20,00,000 recordset with 360 coverage including schema,NaN,Undefined,Multi Column Search,Multi Select,Pivot X and Y for pageSize and pageNo  payload Validations\n  \u003e `yarn ModuleEval`\n\n- ### `Release notes 11 Dec 2020`\n  \u003e basic login tests are written and can view and evaluated by running below command\n  \u003e `yarn LoginEval`\n\n- ### `Release notes 10 Dec 2020`\n  \u003e run `yarn perfgraph`\n  \u003e in new shell run autocannon `yarn customAutocannon`\n  \u003e when autocannon bench is completed go back to perfgraph shell and stop the shell (ctlrl+C)\n  \u003e it will generate graph html link in same perfgraph shell\n\n- ### `Release notes 7 Dec 2020`\n  \u003e made date filter optional with code refractoring by introducing `disableDate=true` arguement in API payload.\n\u003c/details\u003e\n\n\n  \u003c/details\u003e\n\n \u003cdetails\u003e\n \u003csummary id=\"project-statement\"\u003e\n 🚁 Project Statement \u003c/summary\u003e\u003cblockquote\u003e\n\n![redlime](app/video/img/merge_from_ofoct.jpg)\n\n\u003c!-- ![redlime](app/video/img/h1.png)\n![redlime](app/video/img/h2.png)\n![redlime](app/video/img/h3.png)\n![redlime](app/video/img/mandates1.png)\n![redlime](app/video/img/conventional1.png)\n![redlime](app/video/img/advanced1.png) --\u003e\n\n\u003c/details\u003e\n\n\u003cdetails open\u003e \n\u003csummary id=\"Code-Flow\" href=\"#code-flow\"\u003e 🛰️ Architecture \n\u003c/summary\u003e\u003cblockquote\u003e\n\u003cdetails\u003e\n\u003csummary id=\"Server-Side-Code-Flow\" href=\"#Server-Side-Code-Flow\"\u003e 🌯 Server Side \n\u003c/summary\u003e\u003cblockquote\u003e\n\n\u003cdetails\u003e \u003csummary id=\"route-structure-module-operations\"\u003e🥐 Route Structure Module Operations \u003c/summary\u003e\n\n![redlime](app/video/img/route-structure-module-operations.png) \n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e \u003csummary id=\"module-view-ejs\"\u003e🥗 Module View (EJS) Render \u003c/summary\u003e\n\n![redlime](app/video/img/module-view-ejs.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"module-load-operations\"\u003e🍲 Module Load Operations \u003c/summary\u003e\n\n![redlime](app/video/img/module-load-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"multipurpose-features-operations\"\u003e🍟 Multipurpose Features Operations \u003c/summary\u003e\n\n![redlime](app/video/img/multipurpose-features-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"groupby-operations\"\u003e🧆 Groupby Operations \u003c/summary\u003e\n\n![redlime](app/video/img/groupby-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"create-operations\"\u003e🥞 Create Operation \u003c/summary\u003e\n\n![redlime](app/video/img/create-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"update-operations\"\u003e🥨 Update Operations \u003c/summary\u003e\n\n![redlime](app/video/img/update-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"upload-operations\"\u003e🥖 ETL Upload Operations \u003c/summary\u003e\n\n![redlime](app/video/img/upload-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"download-operations\"\u003e🥐 ETL Download Operations \u003c/summary\u003e\n\n![redlime](app/video/img/download-operations.png) \n\u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary id=\"api-cache-operations\"\u003e🍳 Api Cache Operations\u003c/summary\u003e\n\n![redlime](app/video/img/api-cache-operations.png) \n\u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary id=\"api-cache-drilldown\"\u003e🥙 Api Cache Operations-Drilldown\u003c/summary\u003e\n\n![redlime](app/video/img/api-cache-drilldown.png) \n\u003c/details\u003e\n\n\n\u003c/details\u003e\n\u003c!--client side --\u003e\n\u003cdetails\u003e \n\n\u003csummary id=\"Client-Side-Code-Flow\" href=\"#Client-Side-Code-Flow\"\u003e 🛸 Client Side \n\u003c/summary\u003e\u003cblockquote\u003e\n\n\n\n\u003cdetails \u003e \u003csummary id=\"view_structure_and_page_operations\"\u003e✈️ View Structure and Page Operations \u003c/summary\u003e\n\n![redlime](app/video/img/view_structure_and_page_operations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"page_load_and_date_range_operations\"\u003e🛩️ Page Load and Date Range Operations \u003c/summary\u003e\n\n![redlime](app/video/img/page_load_and_date_range_operations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"sort_and_pagination_operations\"\u003e\n🛶 Sort and Pagination Operations \u003c/summary\u003e\n\n![redlime](app/video/img/sort_and_pagination_operations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"Filter_operations\"\u003e🪂 Filter Operations \u003c/summary\u003e\n\n![redlime](app/video/img/Filter_operations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"create_and_update_Operations\"\u003e⛵ Create and Update Operations \u003c/summary\u003e\n\n![redlime](app/video/img/create_and_update_Operations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"Field_validations\"\u003e⛴️ Field Validations \u003c/summary\u003e\n\n![redlime](app/video/img/Field_validations.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"event_listners\"\u003e🚤 Field Validations-Event listeners \u003c/summary\u003e\n\n![redlime](app/video/img/event_listners.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"app_module-actionFunctions\"\u003e🤿 App Module-ActionFunctions \u003c/summary\u003e\n\n![redlime](app/video/img/app_module-actionFunctions.png) \n\u003c/details\u003e\n\n\u003cdetails \u003e \u003csummary id=\"pivotoperations\"\u003e🛷 Pivot Operations \u003c/summary\u003e\n\n![redlime](app/video/img/pivotoperations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"etl-upload-operations\"\u003e🏝️ ETL upload Operations \u003c/summary\u003e\n\n![redlime](app/video/img/etl-upload-operations.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"etl-download-user-actions\"\u003e🍱 ETL download user Actions\u003c/summary\u003e\n\n![redlime](app/video/img/etl-download-user-actions.png) \n\u003c/details\u003e\n\n\n\u003cdetails\u003e \u003csummary id=\"etl-download-operations\"\u003e🍣 ETL download Operations\u003c/summary\u003e\n\n![redlime](app/video/img/etl-download-operations.png) \n\u003c/details\u003e\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary id=\"DB-Side-Code-Flow\" href=\"#DB-Side-Code-Flow\"\u003e 🌯 Database Side\n\u003c/summary\u003e\u003cblockquote\u003e\n\n\u003cdetails\u003e \u003csummary id=\"RBAC-operations\"\u003e🥐 RBAC-ERD \u003c/summary\u003e\n\n![redlime](app/video/img/RBAC-ERD.png)\n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"RBAC-CaseScenarios\"\u003e🍄  RBAC-Case Scenarios \u003c/summary\u003e\n\n![redlime](app/video/img/rbac-case-scenarios.jpg)\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails open\u003e \n\u003csummary id=\"Release-Flow\" href=\"#Release-Flow\"\u003e 🍍 Release Flow \n\u003c/summary\u003e\u003cblockquote\u003e\n\n\u003cdetails \u003e \u003csummary id=\"nodejs-web-app-Env-pt1\"\u003e🥥 Nodejs Web App Env Release Mechanism Pt-1 \u003c/summary\u003e\n\n![redlime](app/video/img/nodejs-web-app-Env-pt1.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"nodejs-web-app-Env-pt2\"\u003e🍒 Nodejs Web App Env Release Mechanism Pt-2 \u003c/summary\u003e\n\n![redlime](app/video/img/nodejs-web-app-Env-pt2.png) \n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"how-to-release-node-app\"\u003e\n🍌 How to Release Node App \u003c/summary\u003e\n\n![redlime](app/video/img/how-to-release-node-app.png) \n\u003c/details\u003e\n\n\n\n\u003c/details\u003e\n\n\n\u003cdetails open\u003e \n\u003csummary id=\"Performance\" href=\"#Performance\"\u003e 🌶️ Performance  \n\u003c/summary\u003e\u003cblockquote\u003e\n\n\u003cdetails \u003e \u003csummary id=\"normal_mode\"\u003e🧄 Normal Mode (API against 2 Million Rows )[requests:2000, concurrent:100] \u003c/summary\u003e\n\n\nhttps://user-images.githubusercontent.com/1698139/182044366-3edb4b47-a7f0-4330-83fd-b2a3ea773117.mp4\n\n\u003c/details\u003e\n\u003cdetails\u003e \u003csummary id=\"cluster_mode\"\u003e🥑 Cluster Mode (API against 2 Million Rows )[requests:2000, concurrent:100]\u003c/summary\u003e\n\nhttps://user-images.githubusercontent.com/1698139/182044831-87c0a025-0168-413b-a96f-b278ade5489f.mp4\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n  \n\u003cbr/\u003e\n\n\n#### 🍱Reach out to me 🍝 🍤\n\n[![Linkedin Profile](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\n)](https://www.linkedin.com/in/rizwan-patel/)\n\u003ca href=\"mailto:captainprice212@gmail.com?\"\u003e\u003cimg src=\"https://img.shields.io/badge/gmail-%23DD0031.svg?\u0026style=for-the-badge\u0026logo=gmail\u0026logoColor=white\"/\u003e\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt212%2FNodejs_Postgresql_VanillaJS_Fastify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatt212%2FNodejs_Postgresql_VanillaJS_Fastify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt212%2FNodejs_Postgresql_VanillaJS_Fastify/lists"}