[{"data":1,"prerenderedAt":100},["ShallowReactive",2],{"project-en-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\u002Fen\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},"project","Project",[16,17,18],"p",{},"Climão is a dashboard for checking current conditions and a five-day forecast at the user's location or in searched cities. The interface brings together temperature, thermal sensation, humidity, wind, pressure, sunrise and sunset, plus a chart for the next few hours.",[16,20,21],{},"Recent searches and up to ten favorite cities are stored locally. The application also provides light and dark themes, loading and error states, and keyboard-accessible controls.",[16,23,24,29],{},[25,26],"img",{"alt":27,"src":28},"Climão visual identity.","\u002Fimg\u002Fwork\u002Fclimao\u002Fcover-climao.svg",[30,31,32],"em",{},"Project visual identity.",[11,34,36],{"id":35},"technical-architecture","Technical Architecture",[16,38,39,40,44],{},"The frontend is a React and TypeScript SPA built with Vite. React Router organizes the dashboard and city pages. TanStack Query isolates remote state by coordinates, caches data for five minutes, and cancels obsolete requests with ",[41,42,43],"code",{},"AbortSignal",". OpenWeatherMap provides current weather, forecast, and geocoding data.",[16,46,47,48,51],{},"The interface combines Tailwind CSS, Radix primitives, and Recharts. Favorites and history use ",[41,49,50],{},"localStorage",", keeping the experience independent of accounts or a backend. City search is debounced to reduce calls while typing, and URL coordinates are validated before an API request is made.",[11,53,55],{"id":54},"maintenance-and-performance","Maintenance and Performance",[16,57,58],{},"A technical review added a reproducible lockfile, upgraded the lint toolchain to ESLint 10, migrated charts to Recharts 3, and updated compatible UI libraries. Route splitting and development-only tooling reduced the largest generated JavaScript file from approximately 789 kB to 380 kB.",[16,60,61],{},"The project passes warning-free ESLint, TypeScript compilation, and a production build. Larger migrations—React 19, Tailwind 4, Vite 8, and TypeScript 7—remain separate so each can receive focused visual and browser regression testing.",[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},"Self","2025-01","Responsive weather dashboard with geolocation, search, and favorite cities","md",false,{},true,"\u002Fwork\u002Fen\u002Fclimao","10","Developer","engineering",{"title":5,"description":80},{"loc":85},"work\u002Fen\u002Fclimao",[93,94,95,96,97],"React","TypeScript","Vite","TanStack Query","TailwindCSS",2025,"mDjQ3jIDRu2IwGrWXxjiyurYcUKZ_S-Fw5ZwLvIRKPs",1785351609256]