Proyecto · Plataforma educativa a medida

Water Challenge League

La liga del agua para centros educativos

Diseño y desarrollo íntegro de la plataforma: web pública, área privada por centro, backoffice de administración, sistema de cartas en tiempo real y motor de cálculo de impacto hídrico.

Contexto

Una liga escolar que hay que sostener con software

Water Challenge League forma parte de NAIRA. Los centros miden el consumo de agua, aceptan retos y sus mejoras se convierten en "litros protegidos". Detrás de esa mecánica hay una plataforma multi-tenant que gestiona temporadas, dos ligas paralelas, decenas de centros, su alumnado, un catálogo de cartas y un calendario de jornadas.

  • Dos ligas independientes (Infantil & Primaria / Secundaria & FP) sobre la misma instancia
  • Multi-tenant por instituto: cada centro solo ve y opera con sus datos
  • Cuatro roles con permisos propios: administración, coordinación de centro, profesorado y alumnado
  • Interfaz y contenidos en español, inglés y francés
Zona de Juego
Arquitectura

Cómo está construida

Una única aplicación Node.js sobre PostgreSQL sirve la web pública, el área de liga y la API. La lógica de negocio (impacto, límites por jornada, reparto de cartas) vive en el servidor; el cliente solo pinta estado.

Multi-tenant y roles

Aislamiento por instituto y temporada en cada consulta. Middleware de sesión que resuelve rol + centro y recorta lo que cada usuario puede leer o escribir.

Motor de litros protegidos

Cálculo del impacto a partir de la referencia de consumo de cada centro y sus lecturas reales. Los litros protegidos son inmutables: se registran y no se pueden editar ni perder.

Jornadas por fecha

El calendario de la temporada se divide en jornadas con rango de fechas. Un proceso periódico detecta el cambio de jornada y reparte una carta a cada centro de forma idempotente.

Zona de Juego en tiempo real

Mesa compartida tipo partida: cada equipo juega sus cartas sobre un objetivo, el servidor resuelve la jugada y propaga el resultado al resto sin recargar.

Catálogo de cartas versionable

Cartas activas/pausadas por temporada, límite de usos por jornada y tope de copias en mano. Reparto automático y manual respetan ambos límites.

Backoffice de administración

CRUD completo de temporadas, ligas, centros, usuarios, retos, jornadas y cartas, con acciones de mantenimiento (reasignar centro, reiniciar partida, forzar reparto).

Mecánica de juego

De la referencia al litro protegido

01

Alta del centro

El centro entra con su equipo en la liga que le corresponde y se le crea su tenant.

02

Línea base

Se registra la referencia de consumo del centro: el punto desde el que se mide la evolución.

03

Retos y misiones

Catálogo de retos por jornada, propuestas del alumnado y votación (un voto por persona y reto).

04

Cálculo de impacto

Cuando el consumo baja respecto a la referencia, el motor convierte esa diferencia en litros protegidos.

05

Puntos y cartas

Completar hitos da puntos y cartas nuevas, que se juegan por jornadas sobre la mesa compartida.

06

Clasificación

Puntos, litros y tendencia alimentan la tabla de cada liga, actualizada en vivo.

Impacto

Competimos por separado.
Protegemos el agua juntos.

Cada acción de los centros se agrega en un contador común, auditable y consultable por API. Objetivo de la primera temporada: proteger el equivalente a una piscina olímpica (2.500.000 L).

+45.000 Lde agua protegida, dato inmutable en base de datos
2ligas paralelas sobre una sola instancia
12centros (tenants) activos en la primera temporada
3idiomas de interfaz: ES · EN · FR
Stack técnico

Con qué está hecho

Tecnología sobria y de mantenimiento sencillo, con la lógica concentrada en el backend.

Frontend

  • HTML + CSS + JavaScript sin framework
  • Componentes propios para cartas y carrusel 3D
  • Modo claro/oscuro y i18n en cliente
  • Diseño responsive (sidebar → hoja inferior en móvil)

Backend

  • Node.js + Express
  • API REST con control de sesión por JWT en cookie
  • Lógica de impacto, jornadas y cartas en servidor
  • Procesos periódicos (cron) para jornadas e impacto

Datos

  • PostgreSQL
  • Esquema multi-tenant (temporada + instituto)
  • Registros de impacto inmutables
  • Migraciones idempotentes en arranque

Infraestructura

  • Servidor en Oracle Cloud (Europa)
  • Servicio gestionado con systemd
  • Nginx como proxy inverso y TLS
  • Despliegue por build + reinicio de servicio

Tiempo real

  • Zona de Juego con estado compartido
  • Resolución de jugadas en el servidor
  • Refresco sin recarga de la mesa
  • Historial de jugadas por centro y jornada

Administración

  • Backoffice web con todos los CRUD
  • Reparto de cartas automático y manual
  • Gestión de retos con orden y estados
  • Herramientas de mantenimiento y reinicio de partida
Con el apoyo de

Un proyecto de red

Water Challenge League nace en el marco de NAIRA e Ingenia, con el respaldo de instituciones públicas de Canarias.

Ingenia · Universidad de La Laguna · Cabildo de TenerifeGobierno de Canarias

¿Necesitas una plataforma a medida como esta?

Multi-tenant, tiempo real, backoffice y despliegue incluidos. Cuéntanos tu caso.

© 2026 Tech Nex · Water Challenge League