VALIDACIÓN ACTIVA
Plataforma de Reserva de Pádel
RBAC, validación de conflictos, scheduling configurable
ReactNode.jsPostgreSQLSupabaseJWT

El Desafío
Soportar múltiples duraciones (60/90 min) mientras prevenimos overlaps. Los conflictos ocurren solo dentro de la misma cancha y fecha. Duraciones configurables desde admin panel.
// Antes: Sin awareness de duración variable
const isAvailable = (courtId, startTime) => {
// Solo verifica hora exacta, no overlaps
return !db.getReservation(courtId, startTime)
}La Arquitectura
Backend-driven validation scopeada a court/date. JWT + middleware enforcement. Admin endpoints configurable. User endpoints con ownership binding.
async function validateConflict(courtId, date, startTime, duration) {
const config = await getCourtConfig(courtId)
if (!config.allowedDurations.includes(duration))
throw new ValidationError('Duration not allowed')
const dayReservations = await db.getReservationsByCourtAndDate(courtId, date)
const endTime = addMinutes(startTime, duration)
const hasConflict = dayReservations.some(r =>
startTime < addMinutes(r.startTime, r.duration) && endTime > r.startTime
)
return { valid: !hasConflict, endTime }
}Impacto y Resultados
100%
Prevención de Conflictos
Overlap validation scoped a cancha previene double-booking
100%
Seguridad
Middleware + route validation = cero admin leaks
Config-driven
Escalabilidad
Admin controla rules sin tocar backend
¿Te interesa?
Vuelve a explorar más sistemas o conectemos directamente.