41y08h /
create-rest-api
⚡ Create an opinionated RESTFUL API in Node.ts
Loading repository data…
marve77 / repository
⚡ API RESTful con NestJS, TypeScript y PostgreSQL. Autenticación JWT segura, CRUD de tareas, TypeORM, migraciones automáticas, validación DTOs, guards de seguridad, dockerización completa y arquitectura modular escalable.
API desarrollada con NestJS, TypeORM, MySQL y JWT para la gestión de tareas.
Clonar y navegar al directorio:
cd Backend
Instalar dependencias:
npm install
Configurar variables de entorno:
cp .env.example .env
Levantar la base de datos con Docker:
docker-compose up -d
Ejecutar migraciones:
npm run migration:run
Iniciar la aplicación: ```
Iniciar la aplicación:
# Desarrollo
npm run start:dev
# Producción
npm run build
npm run start:prod
El proyecto incluye un docker-compose.yml que configura:
# Levantar servicios
docker-compose up -d
# Ver logs
docker-compose logs -f
# Detener servicios
docker-compose down
POST /auth/register
Content-Type: application/json
{
"name": "Juan Pérez",
"email": "juan@example.com",
"password": "password123"
}
POST /auth/login
Content-Type: application/json
{
"email": "juan@example.com",
"password": "password123"
}
Respuesta:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"email": "juan@example.com",
"name": "Juan Pérez"
}
}
POST /tasks
Authorization: Bearer {token}
Content-Type: application/json
{
"title": "Mi primera tarea",
"description": "Descripción opcional"
}
GET /tasks
Authorization: Bearer {token}
GET /tasks/1
Authorization: Bearer {token}
PATCH /tasks/1
Authorization: Bearer {token}
Content-Type: application/json
{
"title": "Título actualizado",
"description": "Nueva descripción",
"done": true
}
PATCH /tasks/1/toggle
Authorization: Bearer {token}
DELETE /tasks/1
Authorization: Bearer {token}
id (PK, autoincremental)email (único, requerido)password (hash, requerido)name (requerido)createdAt (timestamp)updatedAt (timestamp)id (PK, autoincremental)title (requerido)description (opcional)done (boolean, default: false)userId (FK a User)createdAt (timestamp)updatedAt (timestamp)# Desarrollo
npm run start:dev # Inicia con nodemon
npm run build # Compila TypeScript
npm run start # Inicia en producción
# Migraciones
npm run migration:create # Crear nueva migración
npm run migration:run # Ejecutar migraciones pendientes
npm run migration:revert # Revertir última migración
src/
├── auth/ # Módulo de autenticación
│ ├── decorators/ # Decoradores personalizados
│ ├── dto/ # DTOs de autenticación
│ ├── entities/ # Entidad User
│ ├── guards/ # Guards JWT
│ └── strategies/ # Estrategias Passport
├── tasks/ # Módulo de tareas
│ ├── dto/ # DTOs de tareas
│ └── entities/ # Entidad Task
├── database/ # Configuración DB y migraciones
├── common/ # Filtros y utilidades comunes
└── main.ts # Punto de entrada
Para probar la API puedes usar:
root, contraseña: password)Variables en .env:
# Base de datos
DB_HOST=localhost
DB_PORT=3307
DB_USERNAME=nestjs
DB_PASSWORD=nestjs123
DB_NAME=tasks_db
# JWT
JWT_SECRET=tu_clave_secreta_super_segura
JWT_EXPIRES_IN=24h
# App
PORT=3000
NODE_ENV=development
Este proyecto es de uso educativo.
Selected from shared topics, language and repository description—not editorial ratings.
41y08h /
⚡ Create an opinionated RESTFUL API in Node.ts
JesusAraujoDEV /
Memories Core: El motor arquitectónico de nuestro museo digital privado. API RESTful construida con Node.js, TypeScript y Prisma bajo estrictos principios SOLID para inmortalizar memorias. ⚡
stefanFramework /
Built to handle high-concurrency scenarios, IP Challenge is a RESTful API in TypeScript that tracks IP addresses, retrieves geolocation data, and gathers insightful statistics. 🌍⚡ Designed for performance, it processes 1,000+ requests per minute and provides distance calculations, currency conversions, and more. 🚀 #TypeScript #API #Geolocation