Doplax.Dev
← Volver a proyectos
AdoptaUnPeludo

Capacidades

  • Chat en tiempo real
  • Búsqueda vectorial
  • Colas de mensajes
  • Almacenamiento S3

Frontend

ReactReact
TypeScriptTypeScript
TailwindTailwind
Auth0Auth0

Backend

Node.jsNode.js
PostgreSQLPostgreSQL
PrismaPrisma
RabbitMQRabbitMQ
LangChainLangChain
DockerDocker

AdoptaUnPeludo

Completado

Adopta un Peludo conecta protectoras con personas que quieren adoptar. Las protectoras publican fichas de animales y los adoptantes buscan, filtran, guardan favoritos y contactan por chat. Es un proyecto de equipo con backend Node en arquitectura hexagonal y varios microservicios, y frontend React desplegado con Docker.

El reto

Las funcionalidades que dan valor —chat, notificaciones, emails, asistente— son justo las que no pueden bloquear una petición HTTP ni tumbar la aplicación si fallan. La solución fue sacarlas del núcleo y comunicarlas por mensajería asíncrona.

Implementación

  • Arquitectura hexagonal con microservicios

    El dominio queda aislado detrás de puertos y adaptadores, y las responsabilidades transversales —notificaciones, email, asistente, monitorización de errores— viven en servicios independientes que hablan por RabbitMQ.

  • Chat y notificaciones en tiempo real

    Un servicio de WebSockets dedicado mantiene la conversación en vivo entre adoptante y protectora y empuja avisos de eventos como nuevos mensajes o favoritos, sin que la API principal tenga que sostener las conexiones.

  • Asistente con búsqueda vectorial

    Un chatbot construido con LangChain resuelve dudas sobre la plataforma consultando por similitud una base de datos vectorial de embeddings, en vez de responder solo con el prompt.

  • Sesión con access y refresh en cookies

    Autenticación JWT con tokens de acceso y de refresco en cookies, renovados por middleware, y Auth0 con acceso mediante Google para protectoras y adoptantes.

  • Imágenes en S3

    Las fotos de los animales se almacenan en un bucket de S3 y se sirven desde ahí, manteniendo la API sin estado y sin ficheros pegados al servidor.

  • Frontend con React Query

    SPA en React con Vite y Tailwind, con React Query gestionando el estado de servidor —caché, revalidación y estados de carga— en lugar de un store global.

  • Todo el stack en Docker

    Cada servicio va contenedorizado y el conjunto se levanta con un único docker compose, incluyendo datos de prueba con más de un centenar de animales para poder trabajar desde el primer minuto.