Emacuello logo

YouDrive

Ir a YouDrive

Qué es YouDrive?

YouDrive es una aplicación de renta de autos de persona a persona, creada para el proyecto final de Henry. Apuntamos a este nicho porque detectamos que en Argentina había muy pocas aplicaciones similares, y la mayoría de ellas eran centralizadas, por lo que nos pareció ideal hacerlo de este modo.

Cuál fue mí rol en YouDrive?

Formé parte del equipo de backend. Fuimos un equipo de 4 personas con roles bien definidos. Mi aporte al proyecto fue en la autenticación interna y externa, autorización, integración a la base de datos, pasarela de pagos, despliegue de ambas aplicaciones: el backend en AWS EC2 y el frontend en Vercel.

Diagrama entidad relación - DER YouDrive

Cada tabla está conectada por claves foráneas que indican las relaciones entre las diferentes entidades del sistema. Por ejemplo, un usuario puede tener múltiples alquileres, notificaciones, comentarios, direcciones, coches y reseñas. Un coche puede estar relacionado con múltiples alquileres, publicaciones y reseñas.

Diagrama entidad relación de YouDrive

Backend

La aplicación backend está hecha con NestJs y TypeScript. Cuenta con autenticación interna y externa: la interna consiste en usuarios registrados directamente en la base de datos con su contraseña cifrada con Bcrypt; la externa utiliza Passport con la estrategia de Google OAuth 2.0. Ambos tienen emisión de token JWT para su respectiva autorización. La aplicación cuenta con una base de datos PostgreSQL alojada en Railway. Se utiliza el ORM TypeORM para las consultas, pero también se hacen consultas manuales en caso de ser necesario. La pasarela de pago elegida fue Stripe por su fácil integración al proyecto. Para las publicaciones se utiliza un filtro de palabras para evitar su mal uso, al igual que las imágenes, que cuentan con un filtro de AWS Rekognition. Los archivos multimedia se almacenan en Cloudinary, siempre y cuando los filtros lo permitan. Los usuarios tienen roles definidos y, por lo tanto, el backend tiene un sistema de roles que protege los endpoints mediante guardianes. Además, se aplicó un Rate Limit usando Throttler para evitar peticiones maliciosas en algunos endpoints. La aplicación cuenta con un chat persona a persona utilizando WebSockets, y la librería de chat fue Socket.io por su fácil implementación en NestJS. Se utilizó Mailer para las notificaciones, que se envían al momento de registrarse, realizar una compra, cancelaciones e inicio de chats. También se usó Cron para las notificaciones de newsletter por correo. Las publicaciones cuentan con reviews y calificaciones que pueden hacer los usuarios. La API se encuentra documentada con Swagger. El backend se desplegó en AWS EC2, utilizando Nginx para los proxies y ZeroSSL para certificar el dominio.

Frontend

La aplicación frontend fue construida con Next.JS y TypeScript. Se usó Tailwind CSS para el estilo, en conjunto con Flowbite. Cuenta con alertas de SweetAlert, loaders personalizados y utiliza Socket.io client para conectar el chat. También cuenta con validaciones por roles, guarda los tokens en localStorage y utiliza librerías como Date picker. Además, tiene un chatbot personalizado para la página. La aplicación se desplegó en Vercel.

Extras que añadí a la apicación

Captura del chat de YouDrive
Emacuello logo

Emanuel Cuello

Desarrollador Full Stack & SRE

Como extra, implementé un chat persona a persona, usé Amazon Rekognition para filtrar imágenes, una autorización robusta de la aplicación, hice un filtrado de palabras para las publicaciones y rate limit para evitar peticiones maliciosas.

Frameworks y Herramientas Integradas en YouDrive

Estás son algunas de las herramientas y tecnologías que implementé en el proyecto de YouDrive

Quieres contactarme?

Sebastián Ríos

Victor Emanuel Cuello emacuello

Full Stack Developer & SRE NestJS | Express | TypeScript | SQL | NoSQL | Reactjs | Astro | Nextjs | Docker | Microservicios | AWS | Terraform | Kubernetes | DevOps | CI/CD

Hecho con ❤️ por Emanuel

emacuello © 2024

Portafolio Web hecho en Astro