← VOLVER AL SISTEMA
VALIDACIÓN ACTIVA

Plataforma de Reserva de Pádel

RBAC, validación de conflictos, scheduling configurable

ReactNode.jsPostgreSQLSupabaseJWT
Plataforma de Reserva de Pádel

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.

Erik Portillo — Desarrollador Full Stack Junior