App full-stack — Proyecto personal
Aplicación web full‑stack para compartir y descubrir experiencias de viaje, donde los usuarios pueden registrarse e iniciar sesión mediante autenticación JWT, crear, editar, actualizar y eliminar sus propios destinos y experiencias, así como subir y modificar fotos asociadas. La plataforma incluye un sistema de puntos que recompensa el registro y la participación activa, fomentando así la interacción dentro de la comunidad. Los visitantes no registrados pueden explorar libremente las experiencias compartidas por otros viajeros y filtrar el contenido según destinos o tipos de experiencias, disfrutando de una navegación completa sin necesidad de cuenta.
Crear una aplicación completa desde cero, desarrollando tanto el frontend como el backend y asegurando su comunicación eficiente. Opté por una plataforma de intercambio de experiencias de viaje, diferenciándome por sus filtros, gestión de imágenes y un sistema de puntos gamificado que incentiva la participación de los usuarios.
Desarrollé el backend con .NET 8 (C#) y Entity Framework Core como ORM, construyendo una API RESTful con autenticación basada en JWT y el intercambio de datos mediante DTOs. Para la parte cliente, implementé el frontend con Vue 3, que inicialmente usaba Vuetify, pero posteriormente migré a Tailwind CSS para lograr un diseño más profesional, limpio y personalizable. Todo el entorno está contenedorizado con Docker, permitiendo levantar con un solo comando la API, el frontend y la base de datos.
Documentación de la API REST: Auth (login/register), Destinos, Experiencias, Users (perfil/puntos). Soporte JWT Bearer para endpoints protegidos.
CRUD completo que devuelve el título, la descripción, el precio, el ratio, la fecha de creación, el UserId del propietario y los datos del usuario asociado, excluyendo la contraseña por seguridad. Incluye la relación entre User y Destination
Proyecto dockerizado con Docker Compose para levantar la API, Web y BD con un solo comando. 👉 docker-compose up --build.
Arquitectura en capas para mantener una separación clara de responsabilidades ( presentación, lógica de negocio y acceso a datos). JWT protege los endpoints y QueryParams para filtros.
Implementación de SQL Server con Entity Framework Core como ORM, estructurando el acceso a datos mediante DbContext, repositorios e inyección de dependencias.
Autenticación: Implementación de JWT para control de accesos seguro. Autenticación JWT Bearer con clave secreta desde appsettings.Local.json. Middleware aplicado + Swagger "Authorize".
Interfaz desarrollada con Vue 3 mediante componentes reutilizables para mostrar destinos, aplicar filtros y gestionar las experiencias de viaje. Incluye navegación entre vistas, paginación, control de permisos y conexión con la API REST.
¿Te interesa saber más sobre este proyecto?