Node.js + TypeScript + Express + TypeORM + PostgreSQL
- Node.js 18+
- PostgreSQL 13+
- Crear el archivo de entorno
cp .env.example .env
# Editá los valores según tu entorno (usuario, contraseña, base, host, puerto)- Instalar dependencias
npm install- Compilar TypeScript (opcional si usás
dev)
npm run build- Ejecutar migraciones (crea las tablas)
npm run migration:run- Iniciar la API
# Desarrollo (hot reload con ts-node)
npm run dev
# Producción (usa archivos compilados en dist)
npm startLa API escucha por defecto en http://localhost:${PORT} (ver PORT en .env).
Usá .env.example como referencia. Variables principales:
PORT(p. ej. 3000)DB_HOST,DB_PORT,DB_USERNAME,DB_PASSWORD,DB_NAME
- Configuración del DataSource:
src/db/data-source.ts - Entidades:
src/**/*.entity.ts - Migraciones:
src/db/migrations synchronizeestá deshabilitado (usar migraciones)
Scripts útiles:
# Ejecutar migraciones pendientes
npm run migration:run
# Revertir la última migración
npm run migration:revert
# Mostrar estado de migraciones
npm run migration:show
# Generar migración por diff (revisar y ajustar el resultado)
npm run migration:generate
# Crear migración vacía (template)
npm run migration:createNotas:
- Algunas migraciones incluyen
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"para UUID. En algunos entornos puede requerir permisos elevados. - Hay una migración de ejemplo para
todos:src/db/migrations/*-CreateTodosTable.ts. - También hay una migración plantilla para estudiantes con estructura mínima.
-
Documentación Swagger UI:
GET /docs -
Health/Status
GET /api/status
-
Todos (CRUD de ejemplo, quitar)
GET /api/todosGET /api/todos/:idPOST /api/todosbody:{ "title": "Tarea", "completed": false }PUT /api/todos/:idbody parcial:{ "title": "Nuevo título", "completed": true }DELETE /api/todos/:id
src/
app.ts # Express app y middlewares
index.ts # Bootstrap: DataSource y server
controllers/ # Controladores HTTP
services/ # Lógica de negocio
repositories/ # Acceso a datos (TypeORM Repository)
entities/ # Entidades TypeORM (*.entity.ts)
routes/ # Rutas Express
db/
data-source.ts # Configuración TypeORM
migrations/ # Migraciones
- Ejemplo oficial TypeORM + Express: typeorm.io/docs/guides/example-with-express