Description and overview of our project and its features.

Uno, the smart assistant, helps you pick out an outfit perfect for the weather. While using a Google Home or an Alexa device, you can simply ask to “Talk to Uno”, and Uno will take it from there. Based on your location, your local weather, and your gender, Uno suggests clothes that will keep you comfortable all day long. With over 1.5 million combinations of responses, Uno can suggest outfits that contain anything from a formal suit to a casual sweater. With up to five days of forecasting, Uno considers wind speed, temperature, and precipitation for the most optimal outfit.

Why did we choose our project?

We chose this project because we wanted to push ourselves to do something different. In the past, we have worked a lot with mobile applications and databases. With HackUNO, we wanted to expand our horizons by creating a Google Action and Alexa Skill. We had not made such a thing before, so we thought we would give it a try. Typically, at past hackathons, we made applications with the goal of helping others. As a result, we wanted to continue this trend by creating Uno.

Difficulties we faced while completing the project.

There were several difficult challenges we had to overcome during this hackathon. First, we had trouble working with asynchronous functions. We have never worked with this concept before. However, with a bit of research and practice, we were able to apply and create asynchronous functions in our methods. We also had trouble with javascript promises (for example .then() statements). We have worked with Javascript before but never used promises. We learned the promises is closely related to asynchronous functions, but are used a bit differently. We were also able to apply this concept to our project.

While there were plenty of difficult challenges, there were also several tasks we found relatively easy such as utilizing the inline JavaScript linter. As mentioned above, we have learned JavaScript. We have also worked with different IDE's and inline JavaScript linters. By using inline linters, we can make program scripts more readable. We also had a great time working with Github. With our past experiences, we were able to maintain good commit messages, good documentation, and, overall, a clean repository.

What libraries, frameworks, and technologies did we use?

We used Dialogflow, JavaScript, the AccuWeather API, Google Maps API, a Google Home Mini, and an Alexa Dot. We used Dialogflow and Javascript to create Google Action and Alexa Skill. We used the AccuWeather API to get the weather data for the Google Action and Alexa Skill. We used the Google Maps API to get the coordinates of the user so we could get the local weather. We used the Google Home Mini and Alexa Dot to test our actions.

What's in store for the future of this project?

In the future we would like to increase the forecast rates, so users can plan their outfits farther in advance in case they are packing a vacation. We would also like to add more occasions such as weddings and vacations. More occasions give the users more flexibility in how they use our app. Another feature we would like to add is tailored outfits based on the clothes the user has. We would like for them to be able to enter the clothes they have and the app recommend them items from those.

What did each team member contribute?

Tommy: While on this project, I have worked on getting the longitude and latitude. These two systems would be passed to the AccuWeather API to get the forecast. I have also worked on setting entities and intents specifically on DialogFlow. The entities and intents are, in turn, used as different actions within our application. Aside from these two things, I also peer programmed with Danny and Emma on other tasks.

Danny: Throughout this project, I was able to work with our AccuWeather API calls and setting profiles for our users. With AccuWeather, I worked on getting the API calls to give, both, daily and a future five-day forecast. This would then be used to determine possible outfits that the user can wear. With profiles, we wanted the user to have the capability to set their preferences for temperatures. This would give the user more freedom and opportunity to wear more comfortable clothing.

Emma: During this project, I focused on writing the algorithm that determined what outfit to suggest to the user. I compiled lists of outfits to pull from, and I determined the default conditions for each type of outfit. The user can later change the default settings so that they can have a personal experience.

What did each team member learn?

Tommy: I have learned quite a bit throughout this project. I initially learned how to transfer a project from one framework to another without any overlaps. I had also learned how to make asynchronous functions for the first time. This concept is definitely applicable to many other software concepts. As a developer, I did not have much experience making logos. While working at HackUNO, I was able to create a great logo! Along with Google Actions, I believe that I did a better job of creating a conversation smoothly.

Danny: While I had a great time working on this project, I also had a few headaches. While working on the AccuWeather API call, I had to learn how to implement it as an asynchronous function. I have done this once in Flutter, but I haven’t done it using Javascript and DialogFlow. I also had a fun time learning about application intents with DialogFlows. Making a responsive smart assistant definitely is more hard work than meets the eye.

Emma: I improved my Javascript skills. I knew Javascript beforehand, but I hadn’t used it in a few months, so it was nice to have the refresher. I learned how to create a Google Action and Alexa Skill. To create our Google Action and Alexa Skill I had to learn how to access and interpret the information the user gave us. This took some research along with trial and error, but I was able to figure it out.

Built With

Share this project: