{"id":20294834,"url":"https://github.com/hackademymx/nodetemplate","last_synced_at":"2026-06-08T10:32:53.818Z","repository":{"id":98621980,"uuid":"466336948","full_name":"hackademymx/nodeTemplate","owner":"hackademymx","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-05T20:44:03.000Z","size":38,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-03-04T05:31:31.937Z","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-03-05T03:21:19.000Z","updated_at":"2022-09-05T20:44:08.000Z","dependencies_parsed_at":"2023-04-24T22:02:34.901Z","dependency_job_id":null,"html_url":"https://github.com/hackademymx/nodeTemplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hackademymx/nodeTemplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2FnodeTemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2FnodeTemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2FnodeTemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2FnodeTemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackademymx","download_url":"https://codeload.github.com/hackademymx/nodeTemplate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackademymx%2FnodeTemplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34059156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-14T15:31:30.747Z","updated_at":"2026-06-08T10:32:53.803Z","avatar_url":"https://github.com/hackademymx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Estructura Node\n\nAquí te presento la estructura básica que te puede servir para el desarrollo de un proyecto con NodeJS, teniendo como stack lo siguiente:\n\n- Node Js -\u003e Entorno que permite escribir código JS ejecutable de lado del servidor. Descarga en https://nodejs.org/es/download/\n- Express -\u003e Es un Framework de desarrollo que permite simplificar tareas. (https://expressjs.com/es/starter/hello-world.html)\n- Sequelize -\u003e Es una librería que como tal hace la función de ORM. Si quieres saber un poco más sobre ORMs te dejo un enlace (https://openwebinars.net/blog/que-es-un-orm/).\n\n**Tabla de Contenido**\n\n- [Árbol de carpetas📁](#árbol-de-carpetas-📁)\n  - [api](#api)\n  - [database](#database)\n  - [config](#config)\n- [Ejecutar proyecto🚀](#ejecutar-proyecto-🚀)\n  - [Simple ejecución](#simple-ejecución)\n  - [Utilizando Docker](#utilizando-docker)\n- [Manejo de Sequelize CLI](#manejo-de-sequelize-cli)\n  - [Crear un modelo](#1-crear-modelo-y-migración)\n  - [Crear una migración](#2-crear-migraciones)\n  - [Ejecutar migraciones](#3-ejecutar-migraciones)\n\n## Árbol de carpetas 📁\n\n## api\n\nNuestra carpeta api contendrá todo lo relacionado a la capa de la lógica del negocio, en ella encontrarás\n\n- _index.js_ -\u003e Donde se crea la instancia con el framework de express, eventualmente en este archivo escribirás código como usos de funciones y middlewares del framework express\n- _db.js_ -\u003e Conexión a una base de datos\n- _controllers_ -\u003e En esta carpeta se crean las funciones que permiten cumplir con los casos de uso pertenecientes a la lógica del negocio\n- _repositories_ -\u003e Aquí se escribirá todo lo relacionado a las acciones que una entidad puede hacer en la base de datos (hablando por entidad un modelo). Ejemplo CRUD estas acciones que normalmente las entidades llevan a cabo se pueden mantener en este módulo\n- _routes_ -\u003e En Esta carpeta mandas llamar a tus respectivos controllers y les asignas un nombre de EndPoint (urls), básicamente es donde podemos nombrarlos y de esta forma nuestra API los exponga\n- _library_ -\u003e Aquí podemos mantener código como aquellas funciones que nos permiten hacer ciertas cosas muy específicas, ejemplo una función de envío de correo.\n\n## database\n\nEn esta carpeta se mantiene lo relacionado a la capa de datos, esto involucra que tengamos nuestros _models_ (tablas de la BD), _migrations_ archivos que rastrean los cambios que hacemos en la BD y por último los _seeders_ son archivos que permiten tener batches de información y que se pueden ir a poblar fácilmente la BD. (Entiéndase por BD: Base de Datos)\n\n## config\n\nAquí tenemos módulos meramente de configuración con el fin de hacer más escalable nuestro desarrollo, configuraciones tipo mantener nuestras variables de entorno o globales en un mismo módulo exportable\ny así utilizarlas en cualquier parte de nuestro proyecto\n\n# Ejecutar Proyecto 🚀\n\nPara la ejecución del proyecto eventualmente podrás hacerlo de dos formas, una es simple sin manejo de contenedores para tu aplicación y la otra forma será utilizando contenedores\n\n## Simple ejecución\n\nPara ejecutar el proyecto realiza lo siguientes pasos\n\n1. Tener instalado NodeJS en tu sistema operativo\n2. Crear una base de datos en postgreSQL\n3. En la raíz del proyecto crear un archivo llamado .env donde colocarás las variables de entorno necesarias(como credenciales de la base de datos, puertos) para referencia tomar el archivo .env.example\n4. En la terminal colocarte en el directorio donde se encuentra este proyecto y ejecutar las siguientes intrucciones\n5. `npm install` -\u003e Instalará las dependencias que se describen en el archivo package.json, generando así una carpeta llamada node_modules (son los módulos necesarios con los cuales trabajará el framework)\n6. `node index.js` -\u003e Ejecuta el codigo que hay en el archivo index.js lo que permitirá tener corriendo nuestra api o servidor\n\n## Utilizando Docker\n\n## Manejo de Sequelize CLI\n\nComo se comenta al inicio, este proyecto trabaja con el ORM sequelize, por lo tanto muchas de las acciones que podemos hacer en la capa de datos podemos trabajarlas con la CLI de Sequelize, tareas como **crear modelos(tablas)**, **crear y ejecutar migraciones**, **crear y ejecutar seeders**, son operaciones que las podemos hacer desde nuestra terminal, para ello te listo abajo como puedes hacerlo:\n\n### 1. Crear modelo y migración\\*\\*\n\n`npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string`\nPuedes ver esto en la propia documentación de Sequelize: https://sequelize.org/docs/v6/other-topics/migrations/#:~:text=Creating%20the%20first,change%20in%20database.\n\n### 2. Crear migraciones\\*\\*\n\n`npx sequelize migration:generate --name NombreDemigracion`\n\n### 3. Ejecutar migraciones\\*\\*\n\n`npx sequelize db:migrate --url \"postgres://DB_USER:DB_PASSWORD@DB_HOST:DB_PORT/DB_NAME\"`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fnodetemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackademymx%2Fnodetemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackademymx%2Fnodetemplate/lists"}