Proyecto
Pokemon Team Builder
Aplicación Angular para construir equipos competitivos de Pokémon, con cálculo de estadísticas en vivo, análisis de cobertura de tipos y una Pokédex completa.
- Angular 21
- TypeScript
- Signals
- Tailwind CSS 4
- PrimeNG
Contexto
Montar un equipo competitivo de Pokémon implica cruzar muchos datos: estadísticas base, naturalezas, objetos, movimientos y la cobertura de tipos del conjunto. Quería una herramienta que hiciera ese cálculo al instante, sin salir de la pagina, y que permitiera guardar los equipos en una cuenta.
Arquitectura
SPA en Angular 21 con componentes standalone y Signals para el estado del constructor de equipos: cada cambio de naturaleza, EV u objeto recalcula las estadísticas de forma derivada, sin suscripciones manuales.
La interfaz combina Tailwind CSS 4 para la maquetación con PrimeNG para los componentes complejos como tablas y selectores. Consume la API propia con sesión JWT y rutas protegidas.
Decisiones
El análisis de cobertura de tipos se calcula en el cliente a partir del catálogo cacheado, en lugar de pedirlo al servidor: la respuesta es inmediata y la API se mantiene simple.
Qué haría distinto
Recortaría el alcance. Quise cubrir toda la superficie de la API en solitario y con plazo: Pokédex completa, constructor de equipos, equipos públicos y privados, panel de administración y perfil. Salió, pero a costa de construir el módulo de equipos dos veces y abandonando features para una implementación más tardía.
Generaría el cliente HTTP a partir de la especificación OpenAPI de la API en lugar de mantener a mano los endpoints y los tipos: cada cambio en el backend suponía volver a escribirlos en el frontend.