CS-17 — Backend e integraciones
JF Bihotzetan — app de partidos de pádel del equipo
PWA mobile-first para que el equipo de pádel JF Bihotzetan organice sus partidos internos: inscripción por plazas, reserva de pista, chat por partido, notificaciones push y compartir por WhatsApp.
- Mi papel
- Proyecto personal; diseño e implementación completos.
- Periodo
- 2026
- Divulgación
- Proyecto público
- Tecnologías
- TypeScriptNext.jsReactTailwind CSSPostgreSQLPrismaAuth.jsWeb PushVercelNeonVitest
- Última revisión
- 13 de noviembre de 2026
Contexto
El equipo organizaba sus partidos de pádel a mano. Hacía falta una app sencilla en el móvil para crear partidos, apuntarse a una de las cuatro plazas, saber si la pista está reservada y enterarse de los cambios.
Retos
- 01Reglas de partido consistentes con varios usuarios apuntándose a la vez (cuatro plazas, sin duplicados).
- 02Notificaciones push fiables en móvil (incluido iOS) desde una PWA.
- 03Editar partidos sin inundar al equipo de avisos.
Solución y arquitectura
Next.js 15 (App Router) con TypeScript, PostgreSQL y Prisma, y Auth.js con credenciales y argon2. Las reglas del partido viven en servicios de servidor y toda mutación crítica va dentro de una transacción; el servicio calcula el estado abierto/completo y la reserva de pista es una dimensión independiente. Incluye calendario, gestión de clubes, cena tras el partido, chat por partido con límite de mensajes, roles de administración, notificaciones Web Push detrás de una interfaz de proveedor intercambiable y un botón de compartir con un resumen compacto del partido.
Decisiones clave
D-01
Reglas de negocio en servicios, no en componentes
Permite probarlas con tests unitarios (plazas, estados, cena, chat, permisos de borrado) independientemente de la interfaz.
D-02
Notificaciones detrás de una interfaz de proveedor
Hoy se usa Web Push; se puede cambiar de canal sin tocar la lógica.
D-03
Un único aviso consolidado al editar un partido
Los cambios de solo notas no notifican; los de fecha, hora o lugar obligan a declarar de nuevo el estado de la pista.
Compromisos
- Se retiró el recordatorio una hora antes del partido porque el plan gratuito de Vercel solo permite crons diarios.
Resultados
En producción y en uso por el equipo, con entornos separados de producción y preproducción.
Aprendizajes
Aún no documentado
La app es privada para el equipo y requiere cuenta: para probarla hay que contactar con Ander a través de la página de contacto. El código es privado. Flujo de trabajo con ramas feature → develop (preproducción) → main (producción) y despliegue automático.
Pregunta sobre este caso de estudio
Las preguntas de aquí se responden con el caso de estudio «JF Bihotzetan — app de partidos de pádel del equipo» como contexto.