Skip to content

mcattani/Curso_Backend_NodeJs_26132

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Curso Backend Node.js - Comisión 26132

GitHub Repo Node.js Vercel

Descripción

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.

Despliegue

Contenido

  • Requerimientos: servidor Express, rutas, controladores, servicios, modelos, JWT, Firestore y despliegue en Vercel.

Requisitos

  • Node.js >= 20 (probado con v24.17.0)
  • npm
  • Proyecto Firebase con Firestore configurado
  • Cuenta en Vercel para despliegue

Instalación local

Clona el repositorio y sigue estos pasos:

git clone https://github.com/mcattani/Curso_Backend_NodeJs_26132.git
cd Curso_Backend_NodeJs_26132
npm install

Variables de entorno

Crea 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=...

Scripts

  • npm run start — ejecuta node index.js (producción)
  • npm run dev — ejecuta nodemon index.js (desarrollo)

Dependencias

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

Estructura del proyecto

  • index.js — punto de entrada del servidor
  • package.json
  • vercel.json — configuración de despliegue
  • src/
    • 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 como token-generator.js

Rutas disponibles

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 productos
  • GET /api/products/:id — devuelve un producto por id
  • POST /api/products/create — crea un producto (envía JSON en el body)
  • PUT /api/products/:id — actualiza un producto
  • DELETE /api/products/:id — elimina un producto

Pruebas con Postman

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

Requerimientos del curso

  • Requerimiento #1: Configuración inicial — implementado (index.js, package.json con type: "module", scripts start y dev).
  • Requerimiento #2: Dependencias — express, cors, body-parser, dotenv, firebase, jsonwebtoken están presentes.
  • Requerimiento #3: Servidor y middlewares — CORS, body-parser, middleware de 404 y logger implementados.
  • Requerimiento #4: Rutas — products.routes.js y auth.routes.js definidas.
  • 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.js y authMiddleware.js usados.
  • Requerimiento #8: Vercel — configuración de despliegue presente en vercel.json.

Autor

Mariano C. - Comisión 26132

Contributors