Final Modulo 8 - API RESTful

TP Integrador JSAndres Sanchez

API RESTful completa con sistema de autenticacion robusto, persistencia en PostgreSQL mediante Sequelize y gestion de archivos multimedia.

JWT + Bcrypt

Autenticacion segura

PostgreSQL

Persistencia con Sequelize

Node.js + Express

Backend robusto

Estructura del Proyecto

Arquitectura basada en el patron MVC para una organizacion clara y mantenible del codigo.

proyecto-backend/

├── config/

Conexion a PostgreSQL (Sequelize)

├── controllers/

Logica: authController.js y userController.js

├── middlewares/

Auth (JWT), Upload (Multer) y ErrorHandler

├── models/

Modelo User (Hooks de Bcrypt y Scopes)

├── public/

Assets y /uploads para imagenes

├── routes/

Endpoints de la API (index.js)

├── .env

Variables sensibles (No incluido en el repo)

├── .env.example

Plantilla para configuracion de entorno

├── app.js

Servidor y configuracion principal

├── README.md

Documentacion tecnica

Tecnologias y Seguridad

Stack moderno y seguro para el desarrollo de APIs profesionales.

Backend
Node.js & Express

Framework robusto para construir APIs RESTful escalables y de alto rendimiento.

Seguridad
JWT + Bcryptjs

JSON Web Tokens para sesiones seguras y Bcryptjs para hasheo de contrasenas.

ORM & DB
Sequelize + PostgreSQL

ORM potente con soporte para migraciones, hooks y validaciones integradas.

Archivos
Multer

Middleware para procesamiento de imagenes con filtros de tipo y tamano.

Pruebas
Postman

Documentacion testeada integramente con colecciones organizadas.

Instalacion y Configuracion

Sigue estos pasos para configurar el proyecto en tu entorno local.

1

Clonar el repositorio

Clonar el repositorio
git clone https://github.com/andfel1996-commits/proyecto-backend.git
cd proyecto-backend
npm install
2

Variables de Entorno

Crea un archivo .env con:

Variables de Entorno
PORT=3000
DB_NAME=tu_db
DB_USER=postgres
DB_PASS=tu_password
DB_HOST=127.0.0.1
DB_PORT=5432
JWT_SECRET=tu_clave_secreta_jwt
3

Iniciar servidor

Iniciar servidor
npm run dev

Guia de Uso de la API

Documentacion de endpoints para consumir la API con Postman o cualquier cliente HTTP.

Autenticacion (Publica)
Endpoints sin autenticacion requerida
RegistroPOST
/register

Crea un usuario. La contrasena se encripta automaticamente.

LoginPOST
/login

Devuelve un Token JWT necesario para rutas protegidas.

Rutas Protegidas
Requieren Header: Authorization: Bearer <token>
Subida de AvatarPOST
/upload

Carga una imagen usando form-data (campo avatar).

Actualizar UsuarioPOST
/users/update/:id

Modificacion de datos persistidos.

Eliminar UsuarioPOST
/users/delete/:id

Borrado fisico con validacion previa de existencia.

Funcionalidades Modulo 8

Caracteristicas implementadas en esta version final del proyecto.

Proteccion de Rutas

Middleware de autenticacion que valida el token antes de acceder a procesos criticos.

Encriptacion de Datos

Uso de hooks en Sequelize para asegurar que las contrasenas nunca se guarden en texto plano.

Gestion de Archivos

Configuracion de Multer con filtros de tipo de archivo (solo imagenes) y limites de tamano.

API de Consumo Externo

Respuestas en formato JSON con codigos de estado HTTP estandarizados (200, 201, 401, 404).

Reflexiones Tecnicas

Aprendizajes clave del desarrollo de este proyecto integral.

Seguridad

La implementacion de JWT y Bcrypt transformo el proyecto en una herramienta real y segura, protegiendo la integridad del usuario.

Escalabilidad

Al separar la logica de autenticacion en controladores y middlewares especificos, el codigo quedo preparado para crecer sin desorden.

Aprendizaje Integrado

Este proyecto demuestra la capacidad de iterar sobre una base de codigo, migrando de archivos JSON a una base de datos relacional y finalmente a una API protegida.