Inspiration

Individuals with mental health struggles often find it overwhelming to complete seemingly simple everyday tasks such as cleaning your room. When motivation is low, chores like these tend to become less of a priority. We wanted to design an app that turns these tasks into something rewarding, fun, and achievable. We aim to turn everyday cleaning into a gamified experience in order to provide motivation and reinforcement, one small win at a time.

What it does

Room Bloom provides users with motivation through visual progress and positive reinforcement. The app allows users to upload a picture of their space before and after cleaning it up. The app then uses Google Cloud Vision to asses the difference in cleanliness of the space and awards points to the user as well as a positive affirmation. Points can be used to decorate a virtual room, by adding features plants, furniture, and other visual rewards that grow as they complete more tasks.

How we built it

We used React Native with Expo to create a mobile app with a clean, simple and easy to use interface. The images that the users upload were encoded in Base64 and sent to used Google Cloud Vision's API. We used its object localization feature to detect the number of objects in the before and after pictures that the user uploaded. We used the change in number of detected objects to calculate a cleanliness score and award points. If the number of points was past a certain threshold the user was allowed to add a decoration to their room and was also presented with a positive affirmation.

Challenges we ran into

Both teammates were completely new to React as well as using API's so there was a major learning curve from enabling Google Cloud Vision's API, to implementing the API key in our code, to actually sending the images to the API and receiving the correct information. Another challenge came with the limitations of the API. It is not completely accurate in detecting the amount of items removed especially in a very cluttered space, or when the difference in images is not very obvious which limited the accuracy of our app. We also struggled with awarding a range of points based on the ratio of items removed rather than simply 0 or 100 depending on if the space was completely cleaned or not which is what our current product does. Another issue was with the use of Expo Go to view the app on our phones - we did a lot of trial and error with different installations before we were able to successfully load it. We struggled with sharing our project on GitHub and had to even make SSH keys to publish correctly. Finally, it was a challenge to figure out how to successfully view our project on both teammates' devices by sharing servers but we figured it out eventually.

Accomplishments that we're proud of

We are proud of creating a finished product that can have a real world impact on people struggling with mental health issues. We both know from personal experience how much of a difference a little bit of motivation can make when battling mental struggles. We are proud of being able to incorporate new and evolving AI such as Google Vision in to our app as it was the first time for both of us. We are also proud that we were able to effectively work together as a team, splitting up tasks and leaning on each other for support when needed. We are also proud of our ability to debug complex issues such as getting accurate information from the image recognition software.

What we learned

Both teammates were completely new to using React Native, Expo and any sort of image recognition so we learned a lot about app development as well as implementing API's. From React Native we learned the basics of building mobile friendly UIs. We also learned how to navigate Expo to test across multiple devices. We learned how to implement API's like Google Cloud Vision as well as how to format at send data using Base64 encoding. We learned how API responses work by parsing JSON data to drive our app's functionality. We also learned how to effectively debug and the importance of collaboration and version control.

What's next for Room Bloom

We want to create a way for users to select which specific chore they are completing so that our app can work more accurately for that specific task. We also want to add a levels component so that users level up as they gain more points as well as a way for users to keep track of cleaning streaks. We want to create a leaderboard system with a way for users to connect with their friends as this would add a more competitive aspect. We would also like to make our "room" more realistic with a more of a 3D look and options to drag and drop decorations. We also want to train our own AI model instead of using Google Cloud Vision's API to detect cleanliness in a way that is specific to our app, as this could improve both speed and accuracy especially for niche environments.

Built With

Share this project:

Updates