ActuallyUWU: Useful Weather Utility

Inspiration

Ever open a weather app to find temperature variations, humidity, sunrise, sunset, wind speeds, moon phases, a 14-day weather forecast spread out over seven different pages, and more? We did. Weather apps and sites often manage to contain every little piece of information without helping you make your decisions.

Function

ActuallyUWU changes that. Our cross-platform web app intelligently analyses the weather in your area, interprets it with previously-selected preferences, and gives you instant tips on what to wear and how you should commute. Fair warning, you'll talk about weather less—since it's just not a concern anymore.

Construction

We bootstrapped our project with the T3 stack—TypeScript, Next.js, Prisma and tRPC. From there, we began building the UI, borrowing components from the Material UI component library, while thinking about onboarding UX. Our onboarding survey covers questions such as preferred methods of rain protection and commute, covering a range of scenarios. We store this data over the cloud with MongoDB Atlas before fetching it to query a variety of APIs like the Geocoding API, OpenWeather API and Quotes API. After that, we hosted it with Vercel and integrated the process with GitHub for rapid feedback, and hacked on authentication.

Challenges

Many challenges were encountered and successfully addressed. A particularly troublesome one was conflicting dependencies, but we discovered a workaround that worked on production. We also faced difficulty with smooth scrolling animations and using all the weather data—issues that we look forward to tackling as we continue to expand on this project after the hackathon.

Successes

We're particularly proud of our usage of Github Projects for project management, since we brainstormed ideas beforehand and made much more progress on the first day compared to other hackathons. Other successes include a GitHub project board to keep track of tasks, coordinating virtually, and using Vercel and ESLint to verify commit robustness.

Learning

We struck a balance between team members doing things that were familiar to them, helping each other, and completely venturing into the unknown. Most major components of our project (authentication, hosting, MongoDB Atlas) were initially implemented by someone with little to no prior experience, before being reviewed and improved by another person that had more experience. We definitely learned tons while still being generally efficient.

What's Next

One next step is converting this into a native app for mobile devices. Another much-needed feature would be integration with Google Maps or a similar service to see commute weather. Finally, we need to integrate more science-backed health suggestions like our current ones about dangerous UV rays. Instead of asking users about their preferences like we do with rain, we inform our users about the Canadian Cancer Society recommendations on sun protection.


Installation

git clone https://github.com/slightlyskepticalpotat/actually-uwu.git
cd actually-uwu/
npm install
npm run build
export DATABASE_URL=url 
API_URL='https://api.openweathermap.org/data/2.5' 
API_KEY=key FAST_REFRESH=false yarn start
npm start

Built With

Share this project:

Updates