Sobre los proyectos

He creado una variedad de proyectos que muestran mi capacidad para construir aplicaciones robustas y escalables. Desde un chat en tiempo real hasta API RESTful y configuraciones sofisticadas de servidores, cada proyecto resalta mi habilidad para implementar soluciones prácticas y eficientes en el ecosistema de Node.js.

Node.js

Autenticación de Usuario, Sesión, Cookies y JWT con Node.js

Es una aplicación de autenticación básica construida con Node.js, Express y varias tecnologías modernas. Permite a los usuarios registrarse, iniciar sesión, cerrar sesión y acceder a rutas protegidas. Además, utiliza JWT (JSON Web Tokens) para la gestión de sesiones y cookies para almacenar tokens de acceso y refresco.

Tecnologías utilizadas
  • Node.js: Entorno de ejecución para JavaScript en el servidor.

  • Express: Framework para construir aplicaciones web y APIs en Node.js.

  • EJS: Motor de plantillas para generar HTML dinámico.

  • JWT (JSON Web Tokens): Para la autenticación y gestión de sesiones.

  • bcrypt: Para el hashing de contraseñas.

  • Axios: Para realizar solicitudes HTTP internas.

  • Zod: Para la validación de esquemas de datos.

  • db-local: Base de datos local para almacenar usuarios.

  • Cookie-parser: Middleware para manejar cookies en Express.

Chat en Tiempo Real

Este es un proyecto de chat en tiempo real utilizando Node.js, Express, Socket.IO, y otras tecnologías. Permite a los usuarios enviar y recibir mensajes en tiempo real.

Tecnologías usadas:
  • Node.js: Entorno de ejecución para JavaScript en el servidor.

  • Express: Framework web para Node.js, utilizado para manejar las rutas y solicitudes HTTP.

  • Socket.IO: Biblioteca que permite la comunicación en tiempo real entre clientes y servidores.

  • dotenv: Módulo para cargar variables de entorno desde un archivo .env.

  • @libsql/client: Cliente para interactuar con una base de datos SQL.

  • morgan: Middleware de registro de solicitudes HTTP para Node.js.

Movie Application con MySQL

Esta es una aplicación de ejemplo que permite gestionar una base de datos de películas utilizando Node.js y MySQL.

Tecnologías usadas:
  • Node.js: Un entorno de ejecución para JavaScript en el lado del servidor.

  • MySQL: Un sistema de gestión de bases de datos relacional.

  • MySQL2: Un cliente MySQL mejorado para Node.js, con soporte para promesas.

  • Express.js: Un framework de aplicación web minimalista para Node.js.

  • Zod: Una biblioteca de validación de esquemas para TypeScript y JavaScript.

  • HTTPie: Una herramienta para hacer solicitudes HTTP y probar APIs.

Proyecto de Películas - Arquitectura MVC

Este proyecto implementa una API RESTful para gestionar una colección de películas utilizando la arquitectura MVC (Modelo-Vista-Controlador). La aplicación está construida con Node.js y Express.

Estructura de la Aplicación:
  • Rutas: Define las rutas de la API y asocia cada ruta con su correspondiente método del controlador.

  • Modelos: Define el modelo de datos para las películas y contiene métodos para interactuar con el almacenamiento de datos.

  • Controladores: Define los métodos del controlador que manejan las solicitudes y respuestas de la API.

API de Películas

Este proyecto es una API para gestionar una colección de películas. Permite recuperar, crear, actualizar y eliminar películas, así como filtrar películas por género.

Aprendizajes clave:
  • Express: Aprendí a crear y configurar un servidor Express y a manejar rutas para diferentes métodos HTTP.

  • Manejo de archivos: Aprendí a leer y escribir archivos JSON usando el módulo fs de Node.js.

  • Validación de datos: Utilicé la biblioteca Zod para validar los datos de entrada y asegurar que cumplan con ciertos esquemas.

  • UUIDs: Usé crypto.randomUUID() para generar identificadores únicos para las películas.

  • JSON: Aprendí a manejar datos en formato JSON, incluyendo cómo convertir objetos a JSON y escribirlos en un archivo.

Gestión de CORS en Servidores Express
blue and white star illustration
blue and white star illustration

Si el servidor backend no incluye el encabezado Access-Control-Allow-Origin en la respuesta, el navegador bloqueará la respuesta, generando un error de CORS.

turned on laptop on table
turned on laptop on table
turned-onsilver iMac
turned-onsilver iMac
Proyecto de Servidor HTTP con Puerto Disponible

Este proyecto crea un servidor HTTP básico que busca automáticamente un puerto disponible para escuchar, evitando conflictos con otros servicios que puedan estar usando el mismo puerto.

Implementación personalizada del comando ls (list). Permite listar de forma detallada el contenido de un directorio, incluyendo información como el tipo de archivo (directorio o archivo), tamaño en bytes y fecha de modificación.

Implementación personalizada del comando ls (list)