Carlos Correa
← Proyectos

Plataforma de citasSaaS multi-tenant

Reservas para negocios que trabajan con cita. Una sola API da servicio a varios negocios a la vez, y cada uno tiene su propia web.

Estado:
fase final
Hecho con:
Java, Spring Boot, Vue, PostgreSQL, RabbitMQ, Redis, Prometheus, Grafana, Docker, Nginx
Código:
privado

Cómo está montado

Multi-tenantCada negocio es un tenant. El subdominio y la cabecera solo lo anuncian: el tenant real sale de una tabla común en base de datos, que no pertenece a ningún negocio, y todo tiene que coincidir. Así nadie ve los datos de otro.
Tareas asíncronasLo que no tiene que pasar en el momento va a una cola de RabbitMQ: recordar una cita, pedir que se confirme. Los avisos salen por WhatsApp.
SeguridadPáginas públicas para reservar y zonas privadas para gestionar. Lo que ves depende de con quién has entrado.
Caché y fotosRedis guarda lo que se consulta a menudo. Las fotos que sube cada negocio van a un volumen de Docker.
MétricasPrometheus recoge las métricas de cada servicio y Grafana las muestra en paneles.
Librerías propiasLo que se repetía entre servicios (login, tenant, llamadas REST, WhatsApp) lo saqué a librerías. La de WhatsApp es open source.

Más tarde llevé la misma arquitectura hexagonal a un monolito, para un proyecto más pequeño: doce servicios eran demasiado para él, y la estructura funciona igual sin repartirla.