CODERE
Overview
Mi entrada en CODERE respondió a un riesgo
estructural claro: todo el ecosistema digital —aplicaciones,
frontales y operación en stores— dependía de
una sola persona. El conocimiento estaba
centralizado y la continuidad del sistema no estaba garantizada.
Comencé como subcontratado externo, pero el trabajo fue
rápidamente más allá de cubrir tareas puntuales. El contexto
exigía pensar en sistema: reducir dependencia de
personas concretas, estabilizar arquitecturas, preparar el
software para crecer y convivir con marketing, retail y
plataformas enterprise. El paso a interno fue una consecuencia
natural.
El núcleo del trabajo se desarrolló en una dupla muy poco
habitual. Mi compañero, con
más de 45 años de experiencia real en software,
aportaba una visión profunda de arquitectura y operación. Yo
aportaba ejecución, producto y una mentalidad orientada a
automatizar, modularizar y reducir fricción. El
principio era claro: Do it on your own.
Ese enfoque nos permitió construir y mantener un
ecosistema completo: aplicaciones retail
multiplataforma (España y LATAM), una
arquitectura propia que encapsula Redux y
estandariza el desarrollo, un
sistema de notificaciones push fiable en todas
las casuísticas y una migración del CMS corporativo a una
plataforma enterprise-grade como Liferay.
Mi rol fue evolucionando desde el uso de sistemas existentes hasta
la
intervención directa en piezas críticas:
refactorización arquitectónica, diseño de soluciones extensibles,
integraciones complejas con plataformas externas (Salesforce,
Dynamics) y administración de sistemas que debían funcionar en
producción, no en laboratorio.
El resultado no fue una colección de aplicaciones o herramientas
aisladas, sino un
ecosistema digital robusto, mantenible y
preparado para operar en un entorno internacional con requisitos
reales de seguridad, rendimiento y escalabilidad.
Club de España
Aplicación Híbrida
La app del Club España es una aplicación de
retail orientada a usuarios finales, con una
particularidad clave a nivel de negocio: permite el
cierre anticipado de apuestas, una funcionalidad
crítica donde estabilidad, latencia y experiencia de usuario no
son negociables.
Mi trabajo en este proyecto estuvo centrado en
mantenimiento evolutivo y
estabilidad del sistema: actualización de
librerías, saneamiento técnico, adaptación a nuevas versiones del
ecosistema y desarrollo de pequeñas funcionalidades que encajaban
en una base de código ya madura.
A nivel técnico, la aplicación está construida sobre
Angular + Ionic + Capacitor y utiliza una
arquitectura propia que encapsula Redux (ngrx)
llamada ARCA. Esta capa abstrae la complejidad
del estado global y aporta soluciones comunes ya resueltas:
gestión centralizada de loaders,
modales, control del
layout dinámico (header y footer según
dispositivo) y patrones consistentes para el desarrollo de nuevas
vistas.
El mismo código base se distribuye en iOS,
Android, web y
kioskos en entorno Electron, lo
que obliga a pensar cada cambio como parte de un
sistema multiplataforma, no como una app aislada.
Este proyecto fue mi punto de entrada al sector,
al software de CODERE y a su forma de trabajar. Me permitió
entender rápidamente el dominio de negocio, la arquitectura
existente y las exigencias reales de una aplicación de retail en
producción, sentando la base para trabajos más profundos dentro
del ecosistema.
Club de LATAM
Aplicación Híbrida
La app del Club LATAM es una aplicación de
retail orientada a fidelización. El sistema
asigna puntos de nivel a los usuarios en función
de su actividad y desbloquea ventajas progresivas: recompensas en
sala, consumiciones, apuestas gratuitas y otros incentivos ligados
directamente al comportamiento del cliente.
A diferencia del Club España, aquí mi implicación fue mucho mayor.
Mi trabajo se centró en
desarrollo evolutivo, implementación de nuevas
funcionalidades, actualización continua de librerías y
mantenimiento de una base de código compartida
que debía mantenerse estable a pesar de la complejidad creciente.
También aporté mejoras directas en la
experiencia de usuario: animaciones en el
buzón de notificaciones, optimización en la
carga de imágenes y pequeños detalles visuales
que, sin ser críticos para el negocio, marcan la diferencia en la
sensación de fluidez
de una app de uso recurrente.
Uno de los retos clave del Club LATAM es que
una única base de código genera aplicaciones para
múltiples países, cada uno con configuraciones,
endpoints, flujos y pantallas distintas. Esto se resuelve mediante
environments altamente configurables apoyados en
la arquitectura técnica ARCA, que permite
personalizar el comportamiento sin romper el núcleo común del
sistema.
Las notificaciones push fueron otro punto
crítico. Algunos países utilizan
Salesforce Marketing, otros
Dynamics Marketing, lo que obligó a diseñar
integraciones distintas bajo un
sistema unificado. El resultado es una
arquitectura de notificaciones
robusta, extensible y preparada para incorporar
nuevas plataformas si el negocio lo requiere.
En conjunto, el Club LATAM no es solo una app de fidelización: es
un sistema distribuido, multiregión y multicanal,
donde arquitectura, UX y operación deben alinearse para sostener
producto y crecimiento.
Liferay
El CMS Corporativo
En paralelo al ecosistema de aplicaciones, CODERE afrontó un
problema estructural a nivel de
gestión de contenidos. Toda la capa CMS estaba
construida sobre WordPress, una solución válida
para proyectos pequeños o medianos, pero claramente insuficiente
para una empresa internacional con altos
requisitos de rendimiento, seguridad y control.
Los límites empezaron a ser evidentes: problemas de
rendimiento, superficie de
ciberseguridad demasiado amplia y dificultades
para escalar el sistema de forma controlada. Por ello, se decidió
iniciar una migración hacia un CMS más robusto y orientado a
entorno corporativo.
Tras evaluar distintas opciones, la compañía optó por
Liferay, principalmente por su
enfoque en seguridad, control de permisos y
capacidad para operar como plataforma centralizada. Un equipo
externo se encargó de montar los entornos completos de
desarrollo y producción.
Durante esta fase, mi compañero asumió un rol clave de
coordinación entre marketing y el equipo técnico,
facilitando decisiones estratégicas sobre estructura, flujos y
capacidades del CMS. Fue un proceso en el que pude aprender de
primera mano sobre gestión técnica y toma de
decisiones en proyectos de gran escala.
Una vez entregada la plataforma, se nos cedió el testigo completo.
Desde ese momento pasamos a ser responsables de
mantener, administrar y
desarrollar sobre Liferay. Creamos nuevas
páginas, gestionamos contenidos,
fragmentos, usuarios y flujos internos, además de
dar soporte directo a los equipos que lo necesitaban.
En la práctica, asumimos el rol de
administradores de la plataforma, garantizando
que el CMS no fuera solo un repositorio de contenido, sino una
pieza estable del ecosistema digital de CODERE.
Notificaciones Push
Apps híbridas y agente propio
Las notificaciones push son una palanca directa
de marketing, retail y producto: permiten
comunicar ofertas, reenganchar usuarios, anunciar novedades y
activar campañas con un coste muy inferior a un
SMS. En un entorno competitivo, no es “un extra”:
es parte del sistema comercial.
El problema real es conocido por cualquiera que haya sufrido apps
híbridas en producción:
enterarse de una notificación en todas las casuísticas
(primer plano, segundo plano, app cerrada, dispositivo bloqueado,
etc.). Muchas apps híbridas han terminado migrando a nativo por un
motivo simple: nunca lograron que las push fueran fiables cuando
más importaba.
En nuestro caso, lo resolvimos. Diseñamos una solución que cubría
el comportamiento completo en el mundo real, apoyándonos en un
plugin propio (Android) capaz de escuchar
notificaciones ocultas y transferirlas a
Capacitor. Además, fue necesario intervenir en la
capa nativa generada por Capacitor tanto en
iOS como en Android, ajustando
comportamiento y ciclo de vida con código Swift y
Java.
A nivel de plataformas de marketing, convivían dos realidades. Con
Dynamics Marketing el registro de dispositivo
podía controlarse bien desde el frontal: el alta se gestiona vía
endpoints HTTP y el flujo es estable. En cambio,
Salesforce exigía integrar su
SDK, que controla el registro del dispositivo y
parte del comportamiento interno. La integración fue compleja:
semanas de trabajo, documentación escasa y un margen mínimo de
error. Aun así, el objetivo se cumplió.
El resultado fue un sistema de push fiable en
escenarios reales: app en primer plano, segundo plano, cerrada,
múltiples notificaciones simultáneas y condiciones de operación
poco “perfectas”. Este tipo de estabilidad es lo que separa una
demo de un producto operativo, y aportó valor
directo a la compañía.
Y como el problema no era solo técnico sino también de
integración, dimos un paso más: diseñamos, por iniciativa propia,
una
plataforma propia de notificaciones. Esta
plataforma permite enviar push directamente por
APNs/Firebase sin intermediarios, reduciendo el
coste prácticamente a cero.
La plataforma es compatible con entornos modernos y legacy: puede
integrarse como servicio, por
socket o incluso por fichero.
Incluye además una interfaz de administración,
una consola SQL para operar sobre la base de
datos y un servidor propio integrado llamado
Spartan Server, que empaqueta en un único
ejecutable el toolkit completo para gestionar y enviar
notificaciones push de forma parametrizada.
ARCA
Automatic REDUX Core Architecture
ARCA nace como una encapsulación de
Redux aplicada al contexto real de aplicaciones
multiplataforma. Su objetivo no es “reinventar la
rueda”, sino reducir el código repetitivo, homogeneizar patrones y
acelerar el desarrollo sin perder control.
El núcleo de ARCA permite definir acciones en
un fichero estático de forma declarativa. A partir de esa
definición, la propia arquitectura construye las acciones
en caliente, incluyendo automáticamente sus
variantes de respuesta y
error. Además, genera acciones específicas para
peticiones HTTPS, eliminando la necesidad de
crear servicios HTTP manuales para cada caso.
ARCA también resuelve problemas habituales del desarrollo híbrido
que, en muchos proyectos, acaban dispersos o mal resueltos:
gestión centralizada de loaders,
modales y alertas,
posicionamiento automático de header, footer y
body según dispositivo, y un conjunto de
estilos CSS propios que garantizan coherencia
visual.
Cuando llegué al proyecto, ARCA ya existía y empecé utilizándola
como desarrollador. Con el tiempo, pude intervenir directamente en
su evolución y resolver un
problema estructural crítico que limitaba su
escalabilidad.
La arquitectura original incluía un
bucle de inicialización “a fuego” que se
ejecutaba antes de que Angular arrancase, construyendo
dinámicamente las acciones. Esto hacía imposible extraer ARCA como
librería reutilizable y mantenible fuera del proyecto principal.
La solución pasó por sustituir ngrx en el core
por una implementación propia, ligera y específica, basada en
observables (RxJS). Esta nueva capa permite
declarar y registrar acciones incluso en runtime,
sin dependencias rígidas del ciclo de vida de Angular.
Gracias a este cambio, ARCA se convirtió en un
node_module independiente, reutilizable y
versionable, lo que permitió
modularizar la arquitectura y mantenerla alineada
en todos los entornos y aplicaciones del ecosistema.
En la práctica, ARCA dejó de ser “una solución interna” para
convertirse en un pilar arquitectónico
que sostiene aplicaciones complejas, multicanal y multiregión sin
sacrificar velocidad de desarrollo ni control técnico.