01 / Contexto
De una web informativa a una herramienta para la comunidad
Avoid necesitaba una presencia pública sólida y, al mismo tiempo, un espacio útil para sus miembros y responsables. El reto era reunir contenido propio y varias fuentes de datos sin exponer información privada ni convertir cada incidencia externa en una página rota.
Datos fragmentados
El progreso, roster, puntuaciones y logs proceden de servicios con modelos y tiempos de respuesta diferentes.
Dos niveles de acceso
Editores y miembros requieren autenticaciones distintas y permisos claramente separados.
Experiencia consistente
La interfaz debía conservar velocidad, claridad y datos útiles incluso durante fallos parciales.
02 / Solución
Una experiencia pública rápida con profundidad privada
El portal organiza la información en Inicio, Hermandad, Raid, Loot, Míticas+, Roster, Reclutamiento y Guías. El contenido esencial permanece público; los datos internos se solicitan únicamente después de verificar la sesión y la pertenencia a la hermandad.
- Contenido bilingüe: rutas y metadatos independientes en castellano e inglés.
- Datos dinámicos: progreso, temporadas y actividad combinados con contenido editorial.
- Edición privada: publicación versionada para roster, reclutamiento, loot, guías y contenido general.
- Acceso de miembros: Battle.net valida la pertenencia antes de entregar rankings, logs o historial privado.
- Persistencia de preferencias: el personaje seleccionado se recupera tras una nueva autenticación.
03 / Arquitectura
Separación clara entre interfaz, permisos y proveedores
Next.js sirve una capa pública y componentes de servidor. Las credenciales y consultas sensibles nunca llegan al navegador. Cada integración tiene su propia política de caché, reintentos y degradación controlada.
Infraestructura y entrega
Desarrollo
Entorno local con clientes OAuth y configuración aislada.
Preproducción
Rama y credenciales propias para validar sin afectar datos reales.
Producción
Dominio propio, variables protegidas y publicación desde la rama estable.
04 / Calidad y resiliencia
Los fallos externos forman parte del diseño
La plataforma diferencia entre cero progreso, datos parciales y proveedor no disponible. Cuando Raider.IO falla, mantiene el mayor progreso o puntuación válidos de la temporada y lo comunica claramente, evitando sustituir información útil por un guion o un estado engañoso.
- TypeScript estricto, lint y compilación de producción antes de cada lanzamiento.
- Reintentos limitados, solicitudes concurrentes compartidas y cachés con alcance explícito.
- Áreas privadas excluidas de buscadores y respuestas sensibles marcadas como no almacenables.
- Navegación por teclado, estados activos, controles semánticos y diseño sin desbordamiento horizontal.
- Versionado semántico, changelog y validación manual en preproducción antes de cada publicación.
05 / Resultado
Una base estable, preparada para evolucionar
La versión 1.0.0 unifica la presencia pública y las herramientas internas de Avoid en un producto mantenible. La arquitectura permite añadir nuevas fuentes, páginas o editores sin mezclar permisos, contenido y lógica de proveedores.
La calidad no se añadió al final: definió desde el principio cómo debía comportarse cada pantalla cuando los datos, la red o la sesión no eran ideales.
