Desarrollador Web

CustodioPérez.

Nacido en Jerez de la Frontera, tierra del vino

Sobre mí

Soy Custodio.

Aunque todo el mundo me llama Custo. He trabajado en proyectos de modernización de aplicaciones, migrando sistemas antiguos a soluciones web actuales y participando en distintas fases del desarrollo, desde la implementación y revisión de código hasta la solución de incidencias y los despliegues en diferentes entornos.

En el día a día trabajo con metodologías Agile, control de versiones y revisión e integración de cambios. También dedico tiempo a automatizar tareas y aprovechar herramientas de IA para mejorar mi forma de trabajar.

Me gusta entender cómo funciona todo lo que hay detrás de un proyecto, compartir lo que aprendo y ayudar a mis compañeros. Valoro especialmente los equipos donde se puede preguntar, debatir soluciones, recibir críticas y seguir aprendiendo.

Tecnologías

Frontend

  • Angular
  • TypeScript
  • React

Arquitectura

  • Microfrontends
  • Nx
  • Monorepos

Backend

  • Java
  • Spring Boot
  • REST APIs

DevOps

  • Docker
  • GitLab CI/CD
  • Kubernetes

Experiencia

05/2025 - Actualidad

Innovasur

Desarrollador de Software

Trabajo en el desarrollo de software para la Administración Pública, principalmente con aplicaciones que llevan años en funcionamiento y necesitan migrarse a nuevas tecnologías. Formo parte de un equipo en el que asumimos tanto el desarrollo como buena parte de la organización técnica de los proyectos.

Competencias aplicadas

  • Migración de aplicaciones de escritorio a entornos web, manteniendo su funcionalidad.
  • Trabajo con arquitecturas modulares y aplicaciones Angular de gran tamaño.
  • Desarrollo e integración de servicios que sustituyen componentes de sistemas antiguos.
  • Montaje de entornos con Docker y pruebas de integración.
  • Preparación y automatización de despliegues con Jenkins.
  • Organización de las tareas dentro del equipo.
  • Revisión de código, gestión de ramas con Gitflow y merge requests.
AngularSpringTypeScript
02/2024 - 07/2024

VirtualDoing

Desarrollador FullStack

Desarrollé aplicaciones web educativas y gestioné bases de datos de clientes. Participé en la mejora de sus interfaces y funcionalidades.

Proyectos personales

Captura 1 de 3

Whos'Who

Tiempo real y estado compartido

Famoso juego 'Quien es Quien' con personajes de One Piece

Juego online privado para dos personas: salas por invitación, personajes secretos y turnos sincronizados en tiempo real.

NodeJsExpressSocket.IOJavaScriptHTMLCSSPlaywright
Dentro del proyecto: Whos'Who

Desarrollo completo · proyecto individual

El reto
Mantener una partida coherente entre dos navegadores sin revelar el personaje ni los descartes del rival.
La solución
Salas privadas con Express y Socket.IO. El servidor valida las acciones y envía a cada jugador únicamente el estado que puede ver.
Una decisión clave
Las reglas viven en el servidor. Las desconexiones pausan las acciones para permitir la reconexión sin perder inmediatamente la partida.
Cómo se comprueba
Pruebas del motor, integración con conexiones Socket.IO reales y recorridos de navegador con dos sesiones independientes.
Siguiente paso
Añadir persistencia de salas y coordinación entre instancias; actualmente, las partidas viven en memoria.
Visitar la web
Captura 1 de 3

2048: Ascension

Motor de juego y arquitectura de estado

2048 convertido en un roguelike de estrategia

Combina fichas y supera una campaña de doce sectores con objetivos, reliquias, sinergias y rutas que cambian cada partida. Incluye partidas reproducibles por semilla, guardado local y modo clásico.

ReactTypeScriptThree.js
Dentro del proyecto: 2048: Ascension

Desarrollo de la versión roguelike · proyecto individual

El reto
Convertir las reglas de 2048 en una campaña con decisiones y efectos, manteniendo partidas reproducibles.
La solución
Motor puro del tablero y reducer separados de React. Una semilla y las mismas acciones reproducen la partida; el estado y el generador aleatorio se guardan localmente.
Una decisión clave
La lógica no depende de la animación. React representa el estado y el entorno 3D es opcional, con alternativa CSS.
Cómo se comprueba
Pruebas del motor, escenarios de navegador y simulaciones por semilla. El guardado contempla datos corruptos o incompatibles.
Siguiente paso
Afinar el balance con partidas de personas reales y medir el rendimiento sostenido en dispositivos móviles.

A partir de las reglas de 2048, de Gabriele Cirulli.

ChessDB

Modelado y gestión de datos

Base de datos ajedrez

Base de datos MySQL para gestionar torneos de ajedrez, jugadores, resultados y clasificación Elo.

MySQL
Dentro del proyecto: ChessDB

Desarrollo completo · proyecto individual

El reto
Organizar la información de jugadores, torneos, resultados y puntuaciones Elo en una base de datos.
La solución
Una solución centrada en MySQL para relacionar y gestionar la información del torneo.
Una decisión clave
El proyecto pone el foco en la estructura de los datos y en su gestión, complementando los proyectos de interfaz y tiempo real.
Siguiente paso
Ampliar la documentación con ejemplos de consultas y un recorrido completo de un torneo.

Formación

2026 - Actualidad

Máster de IA y Big Data

2024-Actualidad

Grado superior de Desarrollo de aplicaciones Multiplataforma

Colegio Miralmonte

2022-2024

Grado superior de Desarrollo de aplicaciones web

CampusNet

2023

FullStackOpen

Universidad de Helsinki

Dominé el desarrollo web moderno aprendiendo React, Redux, Node.js, MongoDB, GraphQL y TypeScript en un solo curso. Creando aplicaciones de una sola página con APIs REST utilizando Node.js.

También aporto

Más de 15 Cursos Completados

Formación en Python, Inteligencia Artificial, Machine Learning, Prompt Engineering, arquitectura de software y otras tecnologías.

Inglés: Nivel Avanzado

Más de 2 años viviendo en Inglaterra y Holanda.