Proyecto desarrollado para el Curso Backend Node.js — Comisión 26132.
API REST construida con Express, autenticación JWT y persistencia en Firebase Firestore. Está configurada para despliegue en Vercel.
- Requerimientos: servidor Express, rutas, controladores, servicios, modelos, JWT, Firestore y despliegue en Vercel.
- Node.js >= 20 (probado con v24.17.0)
- npm
- Proyecto Firebase con Firestore configurado
- Cuenta en Vercel para despliegue
Clona el repositorio y sigue estos pasos:
git clone https://github.com/mcattani/Curso_Backend_NodeJs_26132.git
cd Curso_Backend_NodeJs_26132
npm installCrea un archivo .env en la raíz con las siguientes variables:
JWT_SECRET_KEY=tu_clave_secreta
FIREBASE_API_KEY=...
FIREBASE_AUTH_DOMAIN=...
FIREBASE_PROJECT_ID=...
FIREBASE_STORAGE_BUCKET=...
FIREBASE_MESSAGING_SENDER_ID=...
FIREBASE_APP_ID=...
npm run start— ejecutanode index.js(producción)npm run dev— ejecutanodemon index.js(desarrollo)
| Librería | Versión | Descripción |
|---|---|---|
| express | ^5.2.1 | Framework web para Node.js |
| cors | ^2.8.6 | Middleware para CORS |
| body-parser | ^2.3.0 | Parser de JSON y URL-encoded |
| dotenv | ^17.4.2 | Gestión de variables de entorno |
| firebase | ^12.14.0 | SDK de Firebase |
| jsonwebtoken | ^9.0.3 | Generación y validación de JWT |
| nodemon | ^3.1.14 | Reinicio automático en desarrollo |
index.js— punto de entrada del servidorpackage.jsonvercel.json— configuración de desplieguesrc/controllers/— lógica de endpoints (auth.controller.js,products.controller.js)routes/— definiciones de rutas (auth.routes.js,products.routes.js)models/— acceso y mapeo de datos (products.models.js)services/— lógica de negocio y llamadas a modelos (products.service.js)middleware/— middlewares (authMiddleware.js,loggerMiddleware.js,notFoundMiddleware.js)data/— configuración de Firebase (data.firebase.js)utils/— utilidades comotoken-generator.js
Autenticación:
POST /auth/login— recibe{ email, password }y devuelve{ token }si las credenciales coinciden.
Rutas protegidas (requieren Authorization: Bearer <token>):
GET /api/products— devuelve todos los productosGET /api/products/:id— devuelve un producto por idPOST /api/products/create— crea un producto (envía JSON en el body)PUT /api/products/:id— actualiza un productoDELETE /api/products/:id— elimina un producto
1. Obtener token (Autenticación)
- Método:
POST - URL:
https://curso-backend-node-js-26132.vercel.app/auth/login - Headers:
Content-Type: application/json - Body (raw JSON):
{
"email": "admin@gmail.com",
"password": "123456"
}2. Usar el token en rutas protegidas
Copiar el token de la respuesta y agregarlo en el header Authorization: Bearer <token> para las rutas bajo /api.
Ejemplo: Obtener todos los productos
- Método:
GET - URL:
https://curso-backend-node-js-26132.vercel.app/api/products - Headers:
Authorization: Bearer <token_obtenido>Content-Type: application/json
- Requerimiento #1: Configuración inicial — implementado (
index.js,package.jsoncontype: "module", scriptsstartydev). - Requerimiento #2: Dependencias —
express,cors,body-parser,dotenv,firebase,jsonwebtokenestán presentes. - Requerimiento #3: Servidor y middlewares — CORS, body-parser, middleware de 404 y logger implementados.
- Requerimiento #4: Rutas —
products.routes.jsyauth.routes.jsdefinidas. - Requerimiento #5/6: Controladores, servicios y modelos — archivos para controladores, servicios y modelos que interactúan con Firestore.
- Requerimiento #7: JWT y middleware de autenticación —
token-generator.jsyauthMiddleware.jsusados. - Requerimiento #8: Vercel — configuración de despliegue presente en
vercel.json.
Mariano C. - Comisión 26132