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

Solution retrospective
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.
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.
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?
Please log in to post a comment
Log in with GitHubCommunity 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