Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 3 days ago

Weather Now Application (React, Tailwind, Zustand, Framer Motion, PWA)

zustand, motion, react-router, pwa, axios
Abere Fejiro•520
@Fejiro001
A solution to the Weather app challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

Most Proud Of

I'm most proud of the cohesive user experience achieved through advanced feature integration:

  • State Management: Successfully managing all complex data, unit toggling, and comparison logic using a single Zustand store to eliminate prop drilling and ensure synchronisation.

  • Micro-interactions: Integrating Framer Motion for smooth, non-janky transitions (skeletons, modals) and using use-sound for audio feedback to create a highly polished feel.

  • Performance: Implementing route-level code splitting and PWA to ensure fast initial load and responsiveness, despite the app's complexity.

What I'd Do Differently Next Time

I would focus on improving data independence and development setup:

  • Planning Phase: I would plan a more cohesive timeline for the implementation of various features.

  • Prioritise Testing Setup: I would set up Vitest and React Testing Library from day one to ensure the complex state logic in my custom hooks and Zustand store was fully verified from the start.

What challenges did you encounter, and how did you overcome them?

Challenges Encountered

  • Layout: Getting the layout not to look overbearing and too jam-packed with information.

  • Handling Geolocation: Managing the precise asynchronous flow (get GPS → fetch weather → check for duplicates) to prevent race conditions when the user adds their current location in the Comparison page.

How I Overcame Them

  • Previewed my application to others to get feedback and offer their opinions on my application.

  • Zustand Guards: I used state flags and strict data checks within my Zustand actions to guard against redundant API calls and accurately compare location objects by their unique coordinates.

What specific areas of your project would you like help with?

I would appreciate specific feedback on the following implementation details:

  • Framer Motion Scroll Performance: I used useInView to animate the hourly forecast list items on scroll. Are there any techniques to further optimise these scroll-triggered animations to ensure they remain perfectly smooth on lower-end mobile devices?

  • Voice Search Accessibility: I integrated the Web Speech API for voice input. What are the best practices for providing clear, accessible feedback (non-visual) to users when the voice recognition feature fails or times out?

  • Zustand Store Efficiency: Please review the structure of my primary Zustand store. Is the data structure for compareLocations optimised for quick updates and removals, or should I consider any deeper state normalisation techniques?

Code
Loading...

Please log in to post a comment

Log in with GitHub

Community feedback

No feedback yet. Be the first to give feedback on Abere Fejiro's solution.

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner
  • Use cases

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License