
DevOps
El trabajo de infraestructura y publicación que mantiene viva una plataforma: una migración de producción desde la nube gestionada a Kubernetes autoalojado sin tiempo de inactividad registrado, servicios en Docker detrás de Cloudflare, CI/CD que despliega con cada push y lanzamientos móviles llevados a través de la revisión de las tiendas. Las copias de seguridad, el TLS y la monitorización son parte del trabajo, no extras.
Un homelab autoalojado que sostiene el estudio, mantenido a diario
La infraestructura propia del estudio sobre un clúster de Kubernetes autoalojado, planificada en febrero de 2026 y mantenida cada día desde entonces: su sitio web, su CMS, sus servidores MCP y las plataformas de clientes que cuida, servidos a través de túneles de Cloudflare, con cada base de datos volcada y verificada cada noche, métricas y reglas de alerta que llegan a un teléfono, un monitor de caídas fuera de casa, un registro de contenedores y un registro npm, y una única consola privada que une merges, ejecuciones, imágenes, pods y nodos en una sola página.
La CI alojada era lo más lento y las compilaciones volvieron a casa
Las compilaciones y los despliegues pasaron de los runners alojados de GitHub, donde cada ejecución empezaba en una máquina nueva y las entregas esperaban colas e incidentes, a un pool de runners en casa: una máquina de compilación que toma cada trabajo mientras está encendida y runners de reserva en un servidor siempre encendido, detrás de un watchdog que, ante la duda, se inclina por seguir entregando. Las imágenes van a un registro de contenedores privado y las librerías del estudio a un registro npm privado, ambos dentro del edificio, y cada ejecución se archiva más allá de la retención de GitHub. El despliegue más lento pasó de ocho minutos y veinticuatro segundos a tres minutos y cinco, y la CI fue un tercio más rápida.
Un nodo pasó a ser un clúster sin cambiar ninguna aplicación
Una segunda máquina que puede apagarse en cualquier momento se unió a un clúster de un solo nodo en funcionamiento sin cambiar ninguna aplicación. Un servidor siempre encendido guarda el plano de control, cada base de datos y cada volumen y la primera copia de cada servicio; la máquina de compilación asume, detrás de un taint, las compilaciones y las segundas copias de los servicios sin estado, y esas copias esperan en lugar de volver cuando ella duerme. Se apaga sola cuando se acaba el trabajo y vuelve cuando entra un trabajo en cola, una consola muestra cada nodo, cada carga de trabajo y cada tramo de disponibilidad, y se midió cada CPU request del servidor siempre encendido, lo que llevó sus reservas del 84 % al 56 % de lo que puede asignar.
Fully Booked - Migración sin Tiempo de Inactividad a Kubernetes Autoalojado
Fully Booked funcionaba sobre infraestructura gestionada en la nube, con una factura que crecía cada mes y una pila que nadie controlaba del todo. Trasladamos toda la plataforma a un clúster de Kubernetes autoalojado sin un minuto de interrupción para quienes la usaban. El cambio abarcó DNS, ingress, bases de datos y el pipeline de despliegue, escalonado de modo que el tráfico se movía solo una vez probada cada capa en el clúster nuevo. Nadie que usara la aplicación esa semana notó nada, que era exactamente el objetivo. La factura recurrente pasó a ser hardware propio, y ese mismo clúster sostiene hoy las publicaciones semanales de la plataforma.
Fully Booked - Implementación Dockerizada con DigitalOcean y Cloudflare
Fully Booked salió como cinco servicios Docker en un único droplet de DigitalOcean detrás de Cloudflare, para que un equipo muy pequeño pudiera operar un marketplace que gestiona depósitos. Un solo repositorio construía cada imagen, un archivo compose y un Makefile reducían una publicación a pull, build y up, un proxy Caddy se encargaba de los certificados y las cabeceras de seguridad, y Playwright generaba en el servidor el PDF de cada presupuesto y factura. Como los servicios eran independientes desde el principio, más tarde pasaron a un clúster de Kubernetes autoalojado sin reconstruir nada.
Fully Booked - Implementación en App Store y Play Store
La app de operadores de Fully Booked llegó a App Store y Google Play y sigue superando la revisión, para que los operadores de minibuses del Reino Unido puedan llevar su negocio desde el teléfono. Las fichas cuentan el caso de negocio con una ventaja por captura, el cumplimiento está integrado en el producto con eliminación de la cuenta desde la app y declaraciones de privacidad acordes con lo que la app recoge, los enlaces abren la app directamente y las publicaciones se escalonan para que una actualización nunca estropee la jornada de un operador.
27 Pearls - Lanzamiento móvil y envío a tiendas
Una app de 27 Pearls terminada se convirtió en fichas aprobadas en App Store y Google Play dentro de un encargo de una semana, sin rondas de rechazos. La semana incluyó las compilaciones de publicación y la firma, textos de ficha escritos en torno al beneficio para el estudiante, capturas para cada tamaño de dispositivo exigido, declaraciones de privacidad acordes con lo que la app recoge y una cuenta de revisión que funcionaba. La app sigue hoy en Google Play.
Explora este trabajo por etiqueta
Otras áreas en las que trabajo
Servidores MCP que exponen una plataforma real a los asistentes de IA, pipelines de agentes que hacen trabajo editorial real tras puertas de aprobación humana, y la infraestructura que los mantiene en producción. Construidos como sistemas, autenticados, con alcance definido y auditados, nunca como demos.
Apps para iOS y Android con React Native y Expo, construidas como una superficie más de la plataforma que las respalda: el mismo backend, la misma autenticación y el mismo modelo de datos que la web, publicadas en las tiendas al mismo ritmo. La sección va desde una plataforma de reservas y red de trabajo compartido para operadores de minibuses y autocares del Reino Unido hasta una app de ayuda al viajero entregada a lo largo de dieciocho meses, una app de habilidades para la vida para estudiantes, una app deportiva local, una herramienta de facturación para un distribuidor y una plataforma para fans.
Software de escritorio en Electron y React para el trabajo que se queda en la máquina: funciona sin conexión, empaquetado para Windows, macOS y Linux, y conectado al backend de la plataforma como cualquier otro cliente cuando la hay. Keyboard Tracker, un rastreador de actividad de empleados con su propio generador de informes, es el ejemplo de esta sección.
Plataformas web y los sitios que las presentan, con React y Next.js sobre un CMS headless: paneles de administración que llevan un negocio día a día, portales para clientes, el libro contable y los préstamos de una cooperativa, y sitios públicos que cargan rápido y se leen bien para buscadores y rastreadores de IA. Renderizados en servidor, localizados y medidos, sea cual sea su tamaño.
Piezas integrables que llevan una plataforma a la web de otra persona. El widget Prebooked permite a un operador de minibuses o autocares ofrecer reservas en su propio sitio, con la plataforma Fully Booked detrás, para que los clientes reserven sin salir de la página. Fácil de instalar y hecho con el mismo nivel que el producto que amplía.
Las piezas alrededor de las plataformas que no son ni una app ni un sitio: gm-libs, los paquetes TypeScript reutilizables para autenticación, datos, interfaces y trabajo en segundo plano de los que parte cada frontend y backend de Webanion, y el recorrido de diseño de un producto, desde un prototipo interactivo en Figma y su UI/UX hasta los recursos visuales y los vídeos tutoriales que lo llevaron al mercado.












