[{"data":1,"prerenderedAt":100},["ShallowReactive",2],{"project-es-climao":3},{"id":4,"title":5,"author":6,"body":7,"company":78,"date":79,"description":80,"extension":81,"highlight":82,"meta":83,"navigation":84,"path":85,"priority":86,"role":87,"section":88,"seo":89,"sitemap":90,"stem":91,"tags":92,"thumbnail":28,"year":98,"__hash__":99},"work\u002Fwork\u002Fes\u002Fclimao.md","Climão","Salguento",{"type":8,"value":9,"toc":71},"minimark",[10,15,19,22,33,37,45,52,56,59,62],[11,12,14],"h2",{"id":13},"proyecto","Proyecto",[16,17,18],"p",{},"Climão es un panel para consultar las condiciones actuales y el pronóstico de cinco días en la ubicación del usuario o en ciudades buscadas. La interfaz reúne temperatura, sensación térmica, humedad, viento, presión, amanecer y atardecer, además de un gráfico de las próximas horas.",[16,20,21],{},"Las búsquedas recientes y hasta diez ciudades favoritas se guardan localmente. La aplicación también ofrece temas claro y oscuro, estados de carga y error, y controles accesibles mediante teclado.",[16,23,24,29],{},[25,26],"img",{"alt":27,"src":28},"Identidad visual de Climão.","\u002Fimg\u002Fwork\u002Fclimao\u002Fcover-climao.svg",[30,31,32],"em",{},"Identidad visual del proyecto.",[11,34,36],{"id":35},"arquitectura-técnica","Arquitectura Técnica",[16,38,39,40,44],{},"El frontend es una SPA en React y TypeScript construida con Vite. React Router organiza el panel y las páginas de ciudad. TanStack Query separa el estado remoto por coordenadas, conserva los datos en caché durante cinco minutos y cancela solicitudes obsoletas con ",[41,42,43],"code",{},"AbortSignal",". OpenWeatherMap proporciona clima actual, pronóstico y geocodificación.",[16,46,47,48,51],{},"La interfaz combina Tailwind CSS, primitivas Radix y Recharts. Los favoritos y el historial utilizan ",[41,49,50],{},"localStorage",", por lo que la experiencia no requiere una cuenta ni un backend. La búsqueda aplica debounce para reducir llamadas mientras se escribe, y las coordenadas de la URL se validan antes de consultar la API.",[11,53,55],{"id":54},"mantenimiento-y-rendimiento","Mantenimiento y Rendimiento",[16,57,58],{},"Una revisión técnica incorporó un lockfile reproducible, actualizó la cadena de lint a ESLint 10, migró los gráficos a Recharts 3 y renovó bibliotecas de interfaz compatibles. La división por ruta y la carga exclusiva de herramientas de desarrollo redujeron el mayor archivo JavaScript generado de aproximadamente 789 kB a 380 kB.",[16,60,61],{},"El proyecto supera ESLint sin avisos, la compilación TypeScript y el build de producción. Las migraciones mayores—React 19, Tailwind 4, Vite 8 y TypeScript 7—permanecen separadas para realizar pruebas visuales y de navegador específicas.",[16,63,64],{},[65,66,70],"a",{":rel":67,":target":68,"href":69},"noreferrer","_blank","https:\u002F\u002Fgithub.com\u002Fsalguento\u002Fclimao","GitHub",{"title":72,"searchDepth":73,"depth":73,"links":74},"",2,[75,76,77],{"id":13,"depth":73,"text":14},{"id":35,"depth":73,"text":36},{"id":54,"depth":73,"text":55},"Propio","2025-01","Panel meteorológico adaptable con geolocalización, búsqueda y ciudades favoritas","md",false,{},true,"\u002Fwork\u002Fes\u002Fclimao","10","Desarrollador","engineering",{"title":5,"description":80},{"loc":85},"work\u002Fes\u002Fclimao",[93,94,95,96,97],"React","TypeScript","Vite","TanStack Query","TailwindCSS",2025,"KKqO7p8vedRrB7x5nZLElDy95hyGNGVao-9nt2OAtU0",1785351609256]