Inspiration

We were inspired by the meme "[go] touch [some] grass" (brackets added to cover for variation in the phrase), which is a saying that indicates that the speaker believes that the listener has spent too much time on the internet and should go outside.

Studies have shown that sunlight improves people's moods and that exercise not only benefits people's physical health, but also their mental health. Touch Grass can improve the health and overall wellness of all of its users by gamifying the process of going outside.

What it does

Users are given a nature challenge: they must go outside, take a picture of something in nature that fits a specific category, and then upload it to the app. If the item in the image falls into the correct category, then the user will get points that they can use to purchase a prize later.

Categories (fully implemented)

Every time the user refreshes the home page, a challenge category is randomly chosen from the following options:
-Bird
-Tree
-Dog
-Cat
-Insect
-Rock

The app uses Google Cloud's Vision API in order to identify if the objects in the uploaded images actually fall into these categories.

Image Verification (not implemented)

In order to ensure that the user is actually going outside and taking new pictures, uploaded images will have to pass a two-step verification process before points are awarded.

First, the images will be run through Google's reverse image search. If an exact match is found, the image will be deemed invalid and the user will not receive points. This will prevent users from simply downloading images from Google and uploading them to the app in order to get points.

Secondly, the images will be checked against all of the previous images that the user has uploaded to Touch Grass. If a match is found, then the image is deemed invalid. This will prevent users from reusing old images in order to get points.

How we built it

We used Flask to create a basic web app, so we used Python and SQLAlchemy for the backend and HTML and CSS for the frontend.

We also worked with Google Cloud's Vision API in order to identify which categories images fell into.

Challenges we ran into

We started out by using machine learning with Vision API, but we realized only after we spent time figuring out how to upload images for training that we didn't have enough time to actually train it--the model needed 8 hours minimum, and the hackathon had less than that time remaining when we figured that out. We tried to work with one of the pre-made models instead, and we were able to make it functional after lots of trial and error.

Because of the short time frame, we weren't able to make the frontend as nice as we wanted. We also weren't able to add the two-step verification checks and login, registration, and points awarding for users. These are all things that we would have added if we had more time.

Accomplishments that we're proud of

We have a web app that compiles and runs, and we learned a lot about Google Cloud. The app successfully generates random categories from the list and correctly identifies whether the image uploaded is of something in that category.

We are also proud of the fact that we managed to work well together despite not ever having met each other before and while being in completely different time zones (one of us is in India and the other is on the East Coast of the US).

What we learned

We learned how to work quickly with Flask, as one of our members had not used it before. We also learned how to use Google Cloud's Vision API with both models constructed with machine learning and pre-made models.

What's next for Touch Grass

We would like to make this a mobile app instead, since it makes more sense for people that are going outside to just take pictures with their phone and upload them right away without having to worry about either using up data (as web apps have to run on a browser) or having to upload their pictures to a computer. We want to implement full functionality, improve our UI/UX design, and add more nature categories as well.

Acknowledgements

The boilerplate for the Flask code was from the Flaskr tutorial.
The thumbnail for this Devpost is from pexels.com.

Built With

Share this project:

Updates