Coworking Platform
Motor de reservas escrito en Rust con arquitectura hexagonal (Ports & Adapters) explícita: el dominio define traits como ReservationRepository y AuthVerifier, implementados por adaptadores concretos e inyectados con Arc<dyn Trait>, lo que permite testear la lógica de negocio sin tocar la base de datos real. El solapamiento de reservas se resuelve con una constraint EXCLUDE USING gist sobre un rango temporal (TSTZRANGE) con índice GiST, garantizando atomicidad sin condiciones de carrera posibles en la capa de aplicación. Cada transición de estado de una reserva queda auditada con actor y motivo en una tabla de historial.
Solapamiento de reservas sin condiciones de carrera
Dos usuarios podían intentar reservar el mismo espacio en el mismo rango horario simultáneamente. Solución: constraint EXCLUDE USING gist sobre (space_id, time_range) resuelto atómicamente por Postgres en O(log n), en vez de validarlo en la capa de aplicación.
Autenticación descentralizada entre servicios
Cada microservicio necesita verificar identidad sin acoplarse al servicio de auth para cada request. Solución: JWT compartido con issuer/audience explícitos verificado localmente en cada servicio, con una única llamada HTTP al auth-service solo quando hace falta confirmar existencia del usuario.
Hexagonal en Rust con DI manual
domain/application/infrastructure/api como crates conceptualmente separados dentro del servicio: los casos de uso dependen de traits (ports), nunca de implementaciones concretas, inyectadas vía Arc<dyn Trait> en el ReservationService. Permite mockear el repositorio en tests sin levantar Postgres.
Auditoría de estados como event sourcing parcial
Cada creación, confirmación o cancelación de una reserva escribe una fila en reservation_status_history con from/to status, actor y motivo, dando trazabilidad completa sin necesidad de un event store completo.