Plataforma de Reserva de Pádel
Aplicación completa de reservas y gestión de canchas de pádel con panel administrativo.
Mi Rol
Implementación completa: autenticación, lógica de validación de conflictos, panel administrativo y validación backend.
Colaboración
Lo desarrollé junto a mi compañero Jose Jandula. Nos organizamos mediante ramas, commits y control de versiones con Git para mantener el código limpio y los cambios documentados.
Stack Tecnológico
Contexto y Objetivo
Este proyecto nació como una plataforma para digitalizar la gestión de reservas de pistas de pádel. El objetivo era evitar solapamientos de reservas, centralizar la disponibilidad y ofrecer un panel de administración flexible y configurable.
El desafío principal era validar que dos reservas no se superpongan considerando duraciones variables (60, 90 minutos), scoped a una pista específica y fecha. Todo esto requería lógica robusta en el backend y una interfaz clara para usuarios y administradores.
Proceso de Desarrollo
Requisitos y Arquitectura
Definimos la estructura: usuarios con roles (user/admin), reservas con duraciones configurables, y validación de conflictos. Decidimos usar PostgreSQL para garantizar integridad de datos.
Modelo de Datos
Diseñamos las tablas: users, pistas, reservations, admin_config. Cada reserva guarda pista_id, start_time, duration para validar overlaps de forma eficiente.
Autenticación y Roles
Implementamos JWT + middleware. Los usuarios pueden reservar; los admins pueden configurar duraciones permitidas, ver calendario de reservas y resolver conflictos.
Validación de Conflictos
Creamos la lógica core: verificar que el rango (start_time, start_time + duration) no se cruce con ninguna reserva existente de la misma pista y día.
Panel Administrativo
Desarrollamos interfaces para gestionar pistas, ver calendario completo, configurar reglas de booking y resolver conflictos manuales si es necesario.
Frontend y Experiencia
Construimos pantallas responsivas para reservar (mobile-first), ver disponibilidad y confirmar bookings. Todo validado con el backend antes de confirmación.
Testing e Iteración
Testeamos casos de conflicto, duraciones edge cases, y permisos de rol. Iteramos basado en feedback.
Control de Versiones
Usamos Git con ramas por feature. Jose y yo revisamos cambios antes de merge, manteniendo historico limpio y cambios bien documentados.
Galería del Proyecto
Vistas Desktop

Dashboard Principal
Vista general del sistema con disponibilidad de pistas y reservas próximas.

Panel de Reservas
Interfaz para crear nuevas reservas, seleccionar duración y confirmar booking.

Panel Administrativo
Gestión de pistas, configuración de duraciones permitidas y reglas de booking.
Experiencia Mobile

Home Mobile
Pantalla de inicio optimizada para mobile con acceso rápido a reservas.

Reservas Mobile
Flow de reserva adaptado a pantalla pequeña con validación en tiempo real.
Arquitectura Técnica
Frontend
- →React para UI components
- →Responsive design (mobile-first)
- →Validación en cliente
- →Estado compartido con Context/Redux
- →Confirmación de reservas
Backend
- →Node.js + Express
- →JWT authentication
- →Role-based middleware
- →Validación de conflictos
- →Endpoints RESTful
Base de Datos
- →PostgreSQL para integridad
- →Tablas: users, pistas, reservations, config
- →Indexes en pista_id + date
- →Constraints para data validation
- →Supabase como proveedor
Seguridad y Validación
- →JWT tokens con expiración
- →RBAC (roles: user, admin)
- →Backend validation obligatoria
- →Ownership checks en endpoints
- →SQL injection prevention
Resultado
La plataforma final permite gestionar reservas de pistas de pádel de forma centralizada, previniendo conflictos automáticamente. Los usuarios pueden reservar desde cualquier dispositivo; los administradores controlan reglas sin tocar código.
Este proyecto me enseñó sobre validación de datos en tiempo real, gestión de roles en aplicaciones fullstack, y cómo colaborar efectivamente mediante Git. La lógica de conflictos fue el desafío más interesante: entender overlaps de rangos horarios y scoped a múltiples dimensiones (court, date).
100%
Validación
Conflictos prevenidos automáticamente
100%
Responsiveness
Mobile, tablet y desktop optimizado
Configurable
Escalabilidad
Admins crean reglas sin deploy
¿Te interesa?
Si te gustaría saber más sobre mis proyectos o cómo abordo problemas técnicos, me encantaría conectar.