{"id":51163260,"url":"https://github.com/abrahamgalue/nodejs-with-postgres-course","last_synced_at":"2026-06-26T16:01:52.703Z","repository":{"id":341421125,"uuid":"1168872957","full_name":"abrahamgalue/nodejs-with-postgres-course","owner":"abrahamgalue","description":"Course completed for learning Express with PostgreSQL","archived":false,"fork":false,"pushed_at":"2026-03-21T22:14:57.000Z","size":394,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T10:52:02.699Z","etag":null,"topics":["docker","express","mysql","nodejs","postgresql","sequelize","typescript"],"latest_commit_sha":null,"homepage":"https://simple-store-api-abrahamgalue.vercel.app/api/v1/products","language":"TypeScript","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/abrahamgalue.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-27T22:28:59.000Z","updated_at":"2026-03-21T22:19:03.000Z","dependencies_parsed_at":"2026-03-01T19:00:17.693Z","dependency_job_id":null,"html_url":"https://github.com/abrahamgalue/nodejs-with-postgres-course","commit_stats":null,"previous_names":["abrahamgalue/nodejs-with-postgres-course"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abrahamgalue/nodejs-with-postgres-course","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fnodejs-with-postgres-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fnodejs-with-postgres-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fnodejs-with-postgres-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fnodejs-with-postgres-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abrahamgalue","download_url":"https://codeload.github.com/abrahamgalue/nodejs-with-postgres-course/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abrahamgalue%2Fnodejs-with-postgres-course/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34823788,"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-26T02:00:06.560Z","response_time":106,"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":["docker","express","mysql","nodejs","postgresql","sequelize","typescript"],"created_at":"2026-06-26T16:01:52.065Z","updated_at":"2026-06-26T16:01:52.697Z","avatar_url":"https://github.com/abrahamgalue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align='center'\u003e\n\n# 💽 NODE/POSTGRES: Store API\n\n\u003c/div\u003e\n\n### API para gestionar productos de una tienda.\n\n\u003e 🧩 Aquí puedes ver su [**Live Demo.**](https://simple-store-api-abrahamgalue.vercel.app/api/v1/products)\n\n![vista-previa](public/preview/01-page-preview.jpg)\n\n## 🚀 Descripción\n\nEste proyecto es el resultado de un curso completo de Node.js con enfoque en bases de datos relacionales. Se trata de una API que permite gestionar el inventario de productos para una tienda virtual, utilizando **PostgreSQL** como motor de base de dato con la posibilidad de remplazarlo por **MySQL**, gestionados a través de **Sequelize**.\n\n## ⚡ Comenzar\n\n### Prerrequisitos\n\n1. Git.\n2. Node.js: cualquier versión a partir de la 20 o superior.\n3. pnpm (recomendado).\n4. Docker Desktop (para la base de datos).\n\n## 🔧 Instalación y Configuración\n\n### 1. Preparar el entorno\n\nCrea los archivos de variables de entorno necesarios basándote en los ejemplos:\n\n- Copia `.env.example` a `.env` y configura tus variables locales.\n- Asegúrate de tener listos `postgres.env` y `MySQL.env` para la configuración de Docker.\n\n### 2. Levantar la Base de Datos (Docker)\n\nEl proyecto incluye un entorno de Docker para facilitar el uso de bases de datos y herramientas gráficas de gestión.\n\n```bash\ndocker-compose up -d\n```\n\nEsto levantará los siguientes servicios:\n\n- **PostgreSQL**: Puerto `5432`\n- **pgAdmin**: Interfaz gráfica para Postgres en `http://localhost:5050`\n- **MySQL**: Puerto `3306`\n- **phpMyAdmin**: Interfaz gráfica para MySQL en `http://localhost:8080`\n\n### 3. Instalar dependencias\n\n```bash\npnpm install\n```\n\n### 4. Ejecución local (modo desarrollo)\n\n```bash\npnpm run dev\n```\n\nEsto iniciará el servidor de desarrollo utilizando `tsx` y tu aplicación estará disponible en `http://localhost:3000`.\n\n## 🎭 Tecnologías\n\nEl proyecto utiliza las siguientes tecnologías:\n\n- [**Express**](https://expressjs.com/) como framework de Node.js.\n- [**TypeScript**](https://www.typescriptlang.org/) para el desarrollo con tipado estático.\n- [**PostgreSQL**](https://www.postgresql.org/) y [**MySQL**](https://www.mysql.com/) como bases de datos.\n- [**Sequelize**](https://sequelize.org/) como ORM para la gestión de datos.\n- [**Docker**](https://www.docker.com/) para la orquestación de servicios y contenedores.\n- [**pgAdmin**](https://www.pgadmin.org/) y [**phpMyAdmin**](https://www.phpmyadmin.net/) como entornos gráficos de bases de datos.\n- [**Faker JS**](https://fakerjs.dev/) para generar datos aleatorios.\n- [**Joi**](https://joi.dev/) para la validación de esquemas de datos.\n- [**Boom**](https://hapi.dev/module/boom/) para el manejo de errores HTTP.\n- [**CORS**](https://github.com/expressjs/cors) para gestionar el acceso desde diferentes dominios.\n- [**Vercel**](https://vercel.com/home) para el despliegue de la aplicación.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabrahamgalue%2Fnodejs-with-postgres-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabrahamgalue%2Fnodejs-with-postgres-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabrahamgalue%2Fnodejs-with-postgres-course/lists"}