{"id":19723475,"url":"https://github.com/sanengineer/bakergun-backend-service-users","last_synced_at":"2026-05-05T01:38:52.080Z","repository":{"id":144043993,"uuid":"308522293","full_name":"sanengineer/bakergun-backend-service-users","owner":"sanengineer","description":"Build Backend Stack CRUD and Private ReSTAPI with Authorization with NodeJS, PostgreSQL and Sequelize","archived":false,"fork":false,"pushed_at":"2020-11-24T09:09:17.000Z","size":5560,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T10:53:02.571Z","etag":null,"topics":["bcrypt","bcrypt-nodejs","bcryptjs","dotenv","jsonwebtoken","jwt","jwt-authentication","jwt-token","nodejs","nodemon","passport","passport-jwt","postgresql","sequelize"],"latest_commit_sha":null,"homepage":"https://bakergun-backend-service-users.herokuapp.com/","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/sanengineer.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-10-30T04:11:14.000Z","updated_at":"2020-11-24T09:09:20.000Z","dependencies_parsed_at":"2023-06-28T13:45:36.655Z","dependency_job_id":null,"html_url":"https://github.com/sanengineer/bakergun-backend-service-users","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sanengineer/bakergun-backend-service-users","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanengineer%2Fbakergun-backend-service-users","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanengineer%2Fbakergun-backend-service-users/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanengineer%2Fbakergun-backend-service-users/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanengineer%2Fbakergun-backend-service-users/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanengineer","download_url":"https://codeload.github.com/sanengineer/bakergun-backend-service-users/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanengineer%2Fbakergun-backend-service-users/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32632290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"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":["bcrypt","bcrypt-nodejs","bcryptjs","dotenv","jsonwebtoken","jwt","jwt-authentication","jwt-token","nodejs","nodemon","passport","passport-jwt","postgresql","sequelize"],"created_at":"2024-11-11T23:22:20.290Z","updated_at":"2026-05-05T01:38:52.063Z","avatar_url":"https://github.com/sanengineer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Build Backend Stack CRUD and Private ReSTAPI with Authorization with NodeJS, PostgreSQL, Sequelize and Swagger (API Documentations)\n\nThis project use [ExpressJS 🚀](https://expressjs.com) ([NodeJS](https://nodejs.org) framework), EJS for admin dashboard, [PosgreSQL](https://www.postgresql.org/), [Sequelize](https://sequelize.org/) (ORM For NodeJS) and and 🔫 [Swagger](https://swagger.io) (API Documentations).\n\n## Let's Try Demo\n\non https://bakergun-backend-service-users.herokuapp.com\n\n## Flow Chart Full Stack On This Project\n\n![Flow_Chart_Fullstack_Web_Develompent](https://res.cloudinary.com/dsv9w1ey3/image/upload/v1604595086/github-images/Fullstack_Web_Developers_Simple_Flow_Chart_zpdn9t.png)\n\n## ER Diagram For 🐘 PostgreSQL\n\n![Entity Diagram PostgreSQL](https://res.cloudinary.com/dsv9w1ey3/image/upload/v1602518877/github-images/Challange_Ch_6_Entity_Diagram_z7jldc.png)\n\n## RestAPI\n\n- **Public RestAPI**\n\n        http://localhost:{PORT}/api/v1\n\n- **Admin RestAPI**\n\n        http://localhost:{PORT}/admin-api/v1\n\n### Endpoints URL For Public (Client)\n\n#### Sign Up User Game\n\n- **POST** on:\n\n        Request Body:\n        {\n           \"username\": \"string\",\n           \"email\": \"string\"\n           \"password\": \"string\"\n        }\n\n        http://localhost:{PORT}/api/v1/user-game\n\n#### Login User Game\n\n- **POST** on:\n\n        Request Body:\n        {\n           \"username\": \"string\",\n           \"password\": \"string\"\n        }\n\n        http://localhost:{PORT}/api/v1/user-game\n\n#### Private ReSTAPI For User Has Sign Up (Need Tokens)\n\n- **GET, PUT, DELETE** on :\n\n        Request Params: ID\n\n        http://localhost:{PORT}/api/v1/user-game/{ID}\n\n\n        Example:\n\n        http://localhost:8080/api/v1/user-game/1\n\n- **POST** on :\n\n        Request Body:\n         {\n           \"user_id\" : integer,\n           \"fullname\": \"string\",\n           \"sex\" : \"string\",\n           \"jobs\" : \"string\"\n         }\n\n        http://localhost:{PORT}/api/v1/user-game-biodata\n\n- **GET**, And **PUT** on:\n\n        Request Params: ID\n\n        http://localhost:{PORT}/api/v1/user-game-biodata/{ID}\n\n\n        Example:\n\n        http://localhost:{PORT}/api/v1/user-game-biodata/1\n\n- **POST** on :\n\n        Request Body:\n        {\n            \"score\"  : \"string\",\n            \"comment\": \"string\"\n        }\n\n        http://localhost:{PORT}/api/v1/user-game-history\n\n- **GET** and **PUT** on :\n\n        Request Params: ID\n\n        http://localhost:{PORT}/api/v1/user-game-history/{ID}\n\n\n        Example:\n\n        http://localhost:{PORT}/api/v1/user-game-history/1\n\n### Endpoints URL For Admin\n\n#### User Game Data\n\n##### Create One User Game\n\n- **POST** on:\n\n        Request Body:\n        {\n           \"username\": \"string\",\n           \"email\": \"string\"\n           \"password\": \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game\n\n##### Get All Users Game or Filtering By Query\n\n- **GET** All on:\n\n        http://localhost:{PORT}/admin-api/v1/user-game\n\n- **GET** All with Filtering by Query:\n\n        Request Query: USERNAME\n\n                http://localhost:{PORT}/admin-api/v1/user-game?username={USERNAME}\n\n\n        Request Query: EMAIL\n\n                http://localhost:{PORT}/admin-api/v1/user-game?email={EMAIL}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game?email=hi@sanengineer.com\n\n##### Update One User Game\n\n- **UPDATE** on:\n\n        Request Params: ID\n\n        Request Body:\n        {\n           \"username\": \"string\"\n        }\n\n        or\n\n        {\n           \"email\": \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game/{ID}\n\n\n\n        Example\n\n         http://localhost:8080/admin-api/v1/user-game/1\n\n##### Change One User Game Password\n\n- **UPDATE** on:\n\n        Request Params: ID\n\n        Request Body:\n        {\n          \"password\": \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game-password/{ID}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game-password/1\n\n##### Delete On User Game\n\n- **DELETE** on:\n\n        Request Params: ID\n\n        Request Query: Username\n\n        http://localhost:{PORT}/admin-api/v1/user-game/{ID}?username={USERNAME}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game/1?username=sanengineer\n\n#### User Game Biodata Data\n\n##### Create One User Game Biodata\n\n- **POST** on:\n\n        Request Body:\n         {\n           \"user_id\" : integer,\n           \"fullname\": \"string\",\n           \"sex\" : \"string\",\n           \"jobs\" : \"string\"\n         }\n\n        http://localhost:{PORT}/admin-api/v1/user-game-biodata\n\n##### Get All Users Game Biodata or Filtering by Query\n\n- **GET** on:\n\n        http://localhost:{PORT}/admin-api/v1/user-game-biodata\n\n- **GET** All Filtering By Query:\n\n        Request Query: FULLNAME\n\n                http://localhost:{PORT}/admin-api/v1/user-game-biodata?fullname={FULLNAME}\n\n\n        Request Query: SEX\n\n                http://localhost:{PORT}/admin-api/v1/user-game-biodata?sex={SEX}\n\n\n        Requst Query: JOBS\n                http://localhost:{PORT}/admin-api/v1/user-game-biodata?jobs={JOBS}\n\n\n\n        Example:\n\n        http://localhost:{PORT}/admin-api/v1/user-game-biodata?jobs=engineer\n\n##### Update One User Game Biodata\n\n- **UPDATE** on:\n\n        Request Params: ID\n\n\n        Request Body:\n        {\n            \"fullname\": \"string\"\n        }\n\n        or\n\n        {\n            \"sex\": \"string\"\n        }\n\n        or\n\n        {\n            \"jobs: \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game-biodata/{ID}\n\n\n\n        Example:  http://localhost:8080/admin-api/v1/user-game-biodata/1\n\n##### Delete On User Game Biodata\n\n- **DELETE** on:\n\n        Request Params: ID\n\n        Request Query: FULLNAME\n\n        http://localhost:{PORT}/admin-api/v1/user-game-biodata/{ID}?fullname={FULLNAME}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game-biodata/1/fullname?sanengineer\n\n#### User Game History Data\n\n##### Create One User Game History\n\n- **POST** on:\n\n        Request Body:\n        {\n            \"score\"  : \"string\",\n            \"comment\": \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game-history\n\n##### Get All Users Game History or Filtering By Query\n\n- **GET** All on:\n\n        http://localhost:{PORT}/admin-api/v1/user-game-history\n\n- **GET** All Filtering by Query on:\n\n        Request Query: SCORE\n\n                http://localhost:{PORT}/admin-api/v1/user-game-history?score={SCORE}\n\n\n        Request Query: COMMENT\n\n                http://localhost:{PORT}/admin-api/v1/user-game-history?comment={COMMENT}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game-history?score=30\n\n##### Update One User Game History\n\n- **UPDATE** on:\n\n        Request Params:ID\n\n        Request BODY:\n        {\n            \"score\" : \"string\"\n        }\n\n        or\n\n        {\n            \"comment\" : \"string\"\n        }\n\n        http://localhost:{PORT}/admin-api/v1/user-game-history/{ID}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game-history/1\n\n##### Delete On User Game History\n\n- **DELETE** on:\n\n        Request Params: ID\n\n        Requst Query: SCORE\n\n        http://localhost:{PORT}/admin-api/v1/user-game-history/{ID}?score={SCORE}\n\n\n\n        Example:\n\n        http://localhost:8080/admin-api/v1/user-game-history/1?score=30\n\n## 🔫 Testing RestAPI On Local Machine With Swagger\n\n- **Public RestAPI**\n\n        http://localhost:{PORT}/api-docs/v1\n\n- **Admin RestAPI**\n\n        http://localhost:{PORT}/admin-api-docs/v1\n\n## 🗃️ Production Package Used\n\n- [Express](https://github.com/expressjs/express),\n- [Morgan](https://github.com/expressjs/morgan),\n- [PG](https://github.com/brianc/node-postgres)\n- [PG Hstore](https://github.com/scarney81/pg-hstore),\n- [JSON Web Token](https://github.com/auth0/node-jsonwebtoken),\n- [Cookie Parser](https://github.com/expressjs/cookie-parser),\n- [Sequelize](https://github.com/sequelize/sequelize),\n- [Passport](https://github.com/jaredhanson/passport),\n- [Passport-JWT](https://github.com/themikenicholson/passport-jwt),\n- [BcrpytJS](https://github.com/dcodeIO/bcrypt.js)\n- [Swagger UI Express](https://github.com/scottie1984/swagger-ui-express)\n\n## Dev Package\n\n- [Dot Env](https://github.com/motdotla/dotenv),\n- [Nodemon](https://github.com/remy/nodemon)\n\n## 🍾️ Get Started\n\n        $ npm install\n\n## ⚗️ Development\n\nUse Node Version 12.18.4 LTS (Recomended).\n\nWatch Terminal! when debugging this project.\n\nWatch this:\n\n[![Video On Github - Bakergun Backend Terminal Logger](https://res.cloudinary.com/dsv9w1ey3/image/upload/v1606208667/github-video/nodejs-expressjs-postgresql-sequelize-swagger-for-readme_vipcnc.gif)](https://res.cloudinary.com/dsv9w1ey3/video/upload/v1606207486/github%20video/bakergun_backend_service_user_terminal_logger_for_readme_github_px7vhe.mp4)\n\n### 🏃‍♂️️ Run Server On Dev Mode:\n\n        $ cd\n\n        $ npm run dev\n\n---\n\n###### **NOTED**: For deploy on cloud like _Heroku_, please **deactivate** code line `require(\"dotenv\").config()` file db-local-config.js on _config directory_.\n\n###### UI Design : https://www.figma.com/file/LcJvUL3iMNdFZ9lsLu0XHq/Bakergun-UI-3D-Models-UI-UX?node-id=0%3A1\n\n###### Backend Frontend: https://github.com/sanengineer/bakergun-frontend\n\n###### Backend Images Asset Services: https://github.com/sanengineer/bakergun-backend-service-images\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanengineer%2Fbakergun-backend-service-users","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanengineer%2Fbakergun-backend-service-users","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanengineer%2Fbakergun-backend-service-users/lists"}