{"id":20294914,"url":"https://github.com/hackademymx/pets-backend-node","last_synced_at":"2026-05-11T09:04:22.359Z","repository":{"id":98622008,"uuid":"477449799","full_name":"hackademymx/pets-backend-node","owner":"hackademymx","description":null,"archived":false,"fork":false,"pushed_at":"2022-04-03T21:38:00.000Z","size":60,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-01-14T09:41:27.766Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/hackademymx.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":"2022-04-03T19:52:22.000Z","updated_at":"2022-04-03T21:38:03.000Z","dependencies_parsed_at":"2023-04-24T22:04:22.543Z","dependency_job_id":null,"html_url":"https://github.com/hackademymx/pets-backend-node","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/hackademymx%2Fpets-backend-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2Fpets-backend-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackademymx","download_url":"https://codeload.github.com/hackademymx/pets-backend-node/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241789946,"owners_count":20020573,"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":[],"created_at":"2024-11-14T15:32:03.536Z","updated_at":"2026-05-11T09:04:17.313Z","avatar_url":"https://github.com/hackademymx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Repositorio de Backend con NodeJs\n\n## Stack\n\n- NodeJs y Express\n- Docker\n- PostgreSQL\n- Sequelize ORM\n\n## Instalación de proyecto\n\nClonar repositorio a tu máquina local:\n\n```\ngit clone \u003curl repositorio\u003e\n```\n\nAbrir tu proyecto desde la terminal, posicionándote en la ruta correspondiente y escribir `code .`\nO meter la carpeta dentro de VSC\n\nAbrir la terminal nuevamente y correr el siguiente comando para instalar todas las dependencias NPM del proyecto:\n\n```\nnpm install\n```\n\nTener docker instalado, ya sea por Linux (de forma nativa) o por Windows y MacOs con Docker Desktop.\n\nEjecutar los siguientes comandos para poder crear nuestros contenedores y levantarlos -\u003e\nSi estás en Linux Ubuntu, no olvides agregar el sudo al comienzo del comando.\n\nSi es primera vez:\n\n```\ndocker-compose up --build\n```\n\nSi ya fue creada anteriormente:\n\n```\ndocker-compose up\n```\n\n## Documentación recomendada\n\n### NodeJs\n\n- NodeJs Main: https://nodejs.org/en\n- NodeJs Doc: https://nodejs.org/en/docs\n- Cómo instalar Nodejs: https://kinsta.com/es/blog/como-instalar-node-js\n- Empresas que usan NodeJs: https://www.clubdetecnologia.net/blog/2017/como-las-grandes-empresas-utilizan-node-js\n\n### Express Framework\n\n- Express Main: http://expressjs.com\n\n### Sequelize ORM\n\n- Sequelize Main: https://sequelize.org/master\n- Sequelize Migraciones: https://sequelize.org/master/manual/migrations.html\n- Sequelize Migraciones: https://sequelize.org/v3/docs/migrations/\n- Sequelize-cli: https://www.npmjs.com/package/sequelize-cli\n\n## Comandos de Sequelize\n\n### Crear modelo\n\n- sequelize model:create --name Table --attributes name:string,age:integer,etc\n\n### Crear migracion\n\n- sequelize migration:generate --name NombreDemigracion\n\n### Correr migraciones\n\n- sequelize db:migrate --url \"postgres://DB_USER:DB_PASSWORD@DB_HOST:DB_PORT/DB_NAME\"\n\n### Crear seeder\n\n- sequelize seed:generate --name nameSeed\n\n### Correr seeders\n\n- sequelize db:seed:all --url \"postgres://DB_USER:DB_PASSWORD@DB_HOST:DB_PORT/DB_NAME\"\n\n¡Ojo! Si ocurre algún error al intentar ejecutar los comandos de sequelize en la terminal, agregar al inicio:\n`npx`\n\n## Pasos para correr migraciones de Sequelize (Con Docker):\n- Levantamos nuestros contenedores con el comando: ```docker-compose up```\n- Abrimos otra terminal, y escribimos: ```docker ps```\n- Les aparecerá información de 1 o más servicios, buscamos y copiamos el CONTAINER ID del servicio de NodeJs. \n- Ingresamos al contenedor del servicio de Nodejs, con el siguiente comando: ```docker exec -ti -u root CONTAINER_ID /bin/bash```  \n  - Reemplazamos la palabra CONTAINER_ID por el ID que copiamos\n- Estando adentro del contenedor, ejecutaremos las migraciones (comandos) de abajo.\n- Chequen sus carpetas de Models y Migrations, y tendrán archivos nuevos.\n- Hagan los cambios que requieran hacer en esos archivos generados.\n- Hagan sus respectivas \"Entidades-Relación\". (1:1, 1:N, N:M)\n- Cuando ya todo esté listo, ejecutamos en la terminal del contenedor: \n```\nnpx sequelize db:migrate --url \"postgres://DB_USER:DB_PASSWORD@DB_HOST:DB_PORT/DB_NAME\"\n```\n  - Reemplazamos las variables DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, DB_NAME por los valores que tienen en sus variables de entorno de su docker-compose.\n- Terminando de ejecutarse el comando, vamos a nuestra base de datos para comprobar que los cambios (migraciones) se han realizado.\n- Vamos a nuestra terminal del contenedor y escribimos: ```exit```\n\n## Migraciones (comandos) llevadas a cabo en las mentorias:\n\n### PD: Si es la primera vez que vas a crear tus modelos y migraciones, copia y pega cada uno de los comandos de abajo. Pero, si anteriormente ya has ejecutado algunas migraciones en el proyecto (chécalo en tu tabla SequelizeMeta, y en tu carpeta Models y Migrations), comprueba cuáles ya ejecutaste y cuáles no, para que así no hagas migraciones \"duplicadas/repetidas\", y así nada más ejecutes migraciones nuevas.\n\n### Para crear los modelos:\n\n- npx sequelize model:create --name users --attributes name:string,email:string,password:string,status:boolean,role:enum\n- npx sequelize model:create --name products --attributes name:string,description:text,price:integer,stock:integer,status:boolean,categoryId:integer\n- npx sequelize model:create --name categories --attributes name:string,label:text,status:boolean\n- npx sequelize model:create --name customers --attributes userId:integer,money:integer,status:boolean\n- npx sequelize model:create --name productCustomers --attributes productId:integer,customerId:integer,status:boolean\n\n### Para agregar nuevos campos a una tabla:\n\n- npx sequelize migration:generate --name add-field-address-in-users\n  - En este comando, queremos agregar el campo \"address\" al modelo users.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fpets-backend-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackademymx%2Fpets-backend-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fpets-backend-node/lists"}