Contexto
Padelium es una app de pádel fantasy pensada para móvil, construida por mi cuenta, en la que la puntuación se calcula torneo a torneo.
Un juego fantasy solo es creíble si su puntuación se puede explicar y comprobar, así que el peso del proyecto está en el backend y en las reglas del dominio más que en las pantallas.
Arquitectura
La regla que me fijé al principio fue: servicios gestionados en los bordes, lógica de negocio en Spring Boot.
Supabase aporta la autenticación y la base de datos PostgreSQL. Todo lo que hace que el producto sea lo que es vive en un backend Spring Boot organizado por funcionalidad y no por capa técnica. Los cambios de esquema pasan por migraciones de Flyway, y la API se documenta con OpenAPI, generado con springdoc. Las pruebas de integración se ejecutan contra H2.
El motivo de la separación es el control. La autenticación y la base de datos son problemas habituales que un servicio gestionado resuelve bien, mientras que la puntuación es el producto, y quiero tenerla en código que controlo y puedo probar.
Dominio
El backend se encarga de cuatro cosas:
- la ingesta de datos, que trae los datos de los partidos de una API de datos de pádel de terceros;
- la puntuación, que convierte esos datos en puntos;
- las instantáneas oficiales de equipo, un registro fijo de cada equipo;
- las clasificaciones de solo lectura y la base de las ligas privadas.
La puntuación y las clasificaciones se tratan como lógica de dominio propia, no como algo que el cliente calcule o presente por su cuenta.
Cliente móvil
El cliente está escrito en Flutter. El estado se gestiona con Riverpod, las llamadas HTTP con Dio y la navegación con go_router. Sentry notifica los errores y PostHog recoge la analítica de producto.
Estado (beta, en pausa)
La beta alcanzó tres hitos: la autenticación, el ciclo de puntuación y una clasificación con datos de ejemplo. La beta llegó a desplegarse.
El desarrollo está en pausa desde mayo de 2026. La puntuación se ejecuta ahora como un proceso por lotes manual para cada torneo, porque todavía no hay planificador.
Qué cambiaría
El primer cambio sería el planificador: la puntuación tras cada torneo no debería depender de que yo lance un proceso a mano.
El segundo sería terminar las ligas privadas, que hoy existen solo como base. Y como todos los datos de partidos vienen de una única API de terceros, pondría un límite más claro alrededor de la ingesta de datos antes de añadir cualquier otra fuente.