Loading repository data…
Loading repository data…
galiprandi / repository
Aprende a construir una API REST profesional con Node.js, TypeScript, Express, Prisma y PostgreSQL.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este es un curso práctico y progresivo diseñado para personas con conocimientos básicos de JavaScript y TypeScript que quieren aprender a construir un backend moderno con tecnologías actuales. A diferencia de otros cursos, aquí trabajarás en un proyecto real desde el primer día, evolucionando tu propio repositorio en GitHub a medida que avanzas.
El objetivo es que, al finalizar, tengas una API funcional y escalable en tu GitHub, construida con buenas prácticas y herramientas profesionales. Aprenderás desde los fundamentos hasta técnicas avanzadas, ganando experiencia en un entorno similar al de un equipo de desarrollo real.
Este curso no solo te enseña a programar, sino que también te prepara para enfrentar desafíos comunes en el desarrollo backend, con un enfoque en depuración, pruebas automatizadas y uso de herramientas modernas.
No es un curso para absolutos principiantes en programación. Se asume que entendés los fundamentos de JavaScript y TypeScript, pero no necesitás experiencia profesional en backend.
Durante el curso, trabajarás con un stack moderno que simula lo que se usa en la industria:\
✅ TypeScript: Código tipado para mayor seguridad y escalabilidad.
✅ Express v5: Framework rápido y flexible para APIs REST.
✅ Prisma ORM: Interfaz moderna para bases de datos SQL.
✅ PostgreSQL: Base de datos robusta y estándar en la industria.
✅ Vitest + Supertest: Pruebas automatizadas con TDD.
✅ Zod – Validaciones de datos seguras y declarativas.
✅ GitHub Copilot + ChatGPT: Aprendizaje asistido con IA.
✅ GitHub Actions: (opcional) Automatización de pruebas y despliegue.
✅ Docker + Railway: (opcional) Entornos de desarrollo y producción reales.
✔️ Configurar un backend profesional desde cero.
✔️ Crear endpoints REST con buenas prácticas.
✔️ Manejar errores y validaciones avanzadas.
✔️ Conectar y gestionar bases de datos SQL con Prisma.
✔️ Aplicar TDD con pruebas automatizadas.
✔️ Implementar autenticación y autorización con JWT.
✔️ Estructurar código de forma escalable con una arquitectura en capas.
✔️ Optimizar la API con paginación, filtros y consultas eficientes.
✔️ Desplegar la API en producción (opcional, con pasos extra).
Este curso tiene un enfoque práctico y progresivo:
El curso fomenta el aprendizaje colaborativo dentro de GitHub, usando:
📌 GitHub Discussions – Espacio para dudas y debates.
📌 Issues – Para reportar errores o sugerir mejoras.
📌 Pull Requests – Para desafíos opcionales y contribuciones.
A diferencia de otros cursos en español que se quedan en teoría o ejemplos básicos, este curso:
✅ Te da un proyecto real que podés mostrar en GitHub.
✅ Usa herramientas actuales y prácticas reales de la industria.
✅ Te entrena en depuración y pruebas automatizadas.
✅ No te deja todo servido: progresivamente te hace pensar y resolver problemas.
Si querés aprender backend de verdad, no solo copiar código, este curso es para vos. 🚀
Si querés mejorar este curso, podés contribuir de varias formas:
Todas las sugerencias y mejoras son bienvenidas. 🚀
Este curso fue creado por Germán Aliprandi. Si tenés preguntas o sugerencias, no dudes en contactarme o abrir una discusión en GitHub.
Este proyecto está bajo la Licencia MIT, lo que significa que podés usar, modificar y distribuir el código con total libertad, siempre que incluyas la licencia original.
📚 ¿Que es un fork? Un fork es una copia de un repositorio que se crea en tu cuenta de GitHub. Permite que puedas hacer cambios en el proyecto original sin afectar el repositorio principal. Los forks son útiles cuando deseas contribuir a un proyecto de código abierto, ya que puedes trabajar en tus propias modificaciones y luego proponer que se integren en el proyecto original mediante un pull request.
Si no tienes una cuenta en GitHub, regístrate en GitHub. Si ya tienes una cuenta, asegúrate de haber iniciado sesión.
Sigue las instrucciones en la página oficial de Git. Instalar GitHub CLI (gh):
Sigue las instrucciones en la página oficial de GitHub CLI. Configurar Git:
Configura tu nombre de usuario y correo electrónico:
git config --global user.name "Tu Nombre"
git config --global user.email "tu-email@example.com"
En tu navegador, ve al repositorio original: https://github.com/galiprandi/api-stock. Haz clic en el botón "Fork" en la esquina superior derecha y selecciona tu cuenta. Clonar el repositorio:
En tu terminal, clona el repositorio forkeado: Cambia tu-usuario por tu nombre de usuario de GitHub. Abrir el proyecto en VSCode:
Navega al directorio del proyecto clonado: Abre el proyecto en VSCode:
Con estos pasos, habrás completado la configuración inicial y estarás listo para comenzar a trabajar en el proyecto.
Primero, necesitamos inicializar TypeScript en nuestro proyecto. Abre tu terminal y ejecuta el siguiente comando:
npm install -D typescript # Instalar TypeScript como dependencia de desarrollo
npx tsc --init # Inicializar un archivo de configuración de TypeScript
Esto creará un archivo tsconfig.json en tu proyecto. A continuación, te muestro un ejemplo de un archivo tsconfig.json optimizado para una aplicación Node.js, reemplaza el contenido de tu archivo tsconfig.json con el siguiente código, te recomendamos que habras el proyecto en VSCode para hacerlo más fácil:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"rootDir": "./src",
"resolveJsonModule": true,
"sourceMap": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
Este archivo de configuración establece varias opciones importantes para un proyecto Node.js, como el objetivo de compilación (target), el sistema de módulos (module), y los directorios de salida y raíz (outDir y rootDir).
📚 Para más detalles sobre las opciones de configuración de TypeScript, te recomiendo leer la cheat sheet de tsconfig.
Ahora, vamos a agregar algunos scripts útiles en nuestro archivo package.json. Abre el archivo package.json y agrega los siguientes scripts en la sección "scripts":
{
"scripts": {
"dev": "tsx watch --env-file=.env src/index.ts",
"build": "tsc",
"start": "node --env-file=.env dist/index.js"
}
}
npm run dev: Este script utiliza tsx para ejecutar tu aplicación en modo de desarrollo, permitiendo recargas automáticas cuando cambias el código.
npm run build: Este script compila tu código TypeScript en JavaScript, colocando los archivos compilados en el directorio dist.
npm run start: Este script ejecuta la versión compilada de tu aplicación desde el directorio dist.
Con estos scripts, estarás listo para desarrollar, compilar y ejecutar tu aplicación Node.js con TypeScript.
Para poder ejecutar nuestra aplicación en modo de desarrollo, necesitamos instalar tsx y @types/node. Ejecuta el siguiente comando en tu terminal:
📚 ¿Qué es tsx? tsx es una herramienta que permite ejecutar TypeScript en Node.js con soporte para hot-reloading, lo que significa que la aplicación se reinicia automáticamente cuando se detectan cambios en el código fuente.
📚 ¿Cuales son las diferencias entre dependencias de desarrollo y de producción? Las dependencias de desarrollo son aquellas que solo se necesitan durante el proceso de desarrollo, como herramientas de prueba y compiladores. Las dependencias de producción son aquellas que se necesitan para que la aplicación funcione en un entorno de producción, como bibliotecas y frameworks necesarios para la ejecución del código.
npm install -D tsx @types/node
📚 ¿Qué son las variables de entorno? Las variables de entorno son valores dinámicos que pueden afectar el comportamiento de un programa. Se utilizan para configurar la aplicación en diferentes entornos, como desarrollo, pruebas y producción.
Antes de crear el archivo .env que contrendrá información sensible, debemos crear un archivo .gitignore en la raíz de tu proyecto y agregues las siguientes líneas:
.env
node_modules
dist
⚠️ IMPORTANTE: Esto evitará que el archivo .env, con las variables de entorno sensibles, se suba al repositorio.
Para gestionar las variables de entorno en nuestro proyecto, vamos a crear un archivo .env en la raíz de nuestro proyecto. Este archivo contendrá las variables de entorno necesarias para configurar nuestra aplicación.
Crea un archivo .env en la raíz de tu proyecto y agrega las siguientes variables de entorno:
PORT=3000
Para centrar la gestión de las variables de entorno en un solo lugar, vamos a crear un archivo de configuración src/config.ts que cargará las variables de entorno y las exportará para su uso en la aplicación.
Crea un archivo src/config.ts y agrega el siguiente código:
export const config = {
ENV: process.env.NODE_ENV || "development",
PORT: process.env.PORT || 3000,
};
Para verificar que todo está configurado correctamente, vamos a crear un simple "Hello World!" en la consola. Crea un archivo src/index.ts con el siguiente contenido:
console.log("Hello, World!");
Ahora, ejecuta el siguiente comando en tu terminal:
npm run dev
Deberías ver el mensaje "Hello, World!" impreso en la consola. Si ves este mensaje, ¡tu configuración de TypeScript está lista y funcionando! Ahora, puedes avanzar al siguiente paso.
# Salida esperada
> npx tsx watch --env-file=.env src/index.ts
Hello, World!
Para probar el hot-reloading, modifica el mensaje en src/index.ts por "Hello, TypeScript!" y guarda el archivo. Deberías ver que el servidor se reinicia automáticamente y muestra el nuevo mensaje en la consola.
📚 ¿Qué es hot-reloading? Hot-reloading es una técnica que permite recargar automáticamente la aplicación cuando se detectan cambios en el código fuente. Es una característica muy útil para el desa