🏞️ Inspiration 🏕️

With all the doom and gloom on global warming and climate change, we often get overwhelmed with our responsibility to protect the planet. Sometimes, we need to take a step back from the big picture and start with what's happening in our local area.

We developed Ecodex to push others to explore their local environments and learn more about the flora and fauna near them. By doing so, we hope more people will be able to associate themselves to the ecosystems that they live in, giving them a better picture of what they are trying to protect.

🤨 What it does 🤔

Ecodex allows users to take pictures of wildlife and store them in their Ecodex library. The library stores all the unique species of wildlife you've encountered. It provides information about the specific animal/plant in the picture in a digestible manner and also lets you see the photos you've taken.

Ecodex also shares where you and other users have spotted rare wildlife so people nearby can learn more about that wildlife as well. Lastly, there is a point system associated with taking photos of wildlife based on their rarity to encourage users to explore their surroundings.

🧑‍🔬 How we built it 💻

We used Expo and React Native as our front-end framework, allowing for quick and easy mobile development from the moment we began. As a result, our application works on any mobile phone without errors.

When in the photo-taking screen, we access the device's camera and send the captured picture to Huggingface 🤗 to classify what the camera sees and feed those results to OpenAI 🧠 which determines whether the subject of the image is a plant, animal, or neither. Then, we send it to Firebase 🔥 to store the images along with other relevant data. In the Ecodex library, we fetch all the unique wildlife you've found and display thumbnails which you can click to enter a new page with more information. We used Google Maps 🗺️ for the location services that allow us to display where you are and also pin where others have spotted rare wildlife. Lastly, we use Firebase 🔥 to also fetch each user's statistics for the profile page.

🥺 Challenges we ran into 🥹

When trying to classify images, we ran into a few issues regarding what vision-based model to use. We started with Google's Vision API but found its classification results quite unreliable. We tried a few more free APIs but most failed to meet our standards. Once we came across Huggingface, we were able to classify images in a consistent manner, but then we needed a way to ensure the images would only be uploaded if they were of wildlife. This would require us to call upon OpenAi's API to make the final call. Another issue we had to overcome was the use of React Native. Unfortunately, our original front-end member caught a cold right before the hackathon. Our remaining team had varying levels of web development but little to no experience developing mobile apps. For some of us, we had to learn the ins-and-outs of JavaScript as we progressed through, while others had to convert their previous React experience to React Native. Lastly, we also ran into issues storing images efficiently since Firebase limits the document size you can send to the database through their API.

😤 Accomplishments that we're proud of 💪

We are proud of using React Native to create a mobile application that works regardless of the user's operating system. We all learned a new front-end framework and experienced how to integrate it with Firebase, OpenAi, Huggingface, and more. We are also proud of creating a functional project within a day, especially since this is one of our members first hackathon and we only have 3 people.

🤓 What we learned 🤯

We learned how to integrate our front-end to back-end in a way that easily allows for the transfer of data between the two. We also familiarized ourselves with React Native and how to debug UI-related code on mobile devices. One of the most important takeaways is that we learned how to work as a team, dividing up the work into smaller sections but still providing aide to one another when we were stuck.

📈 What's next for EcoDex 📈

We plan to update our point scheme to allow for a more dynamic allocation. We would like local rarity to determine the point value for each plant. For instance, a blue jay would be common in Canada but unheard of in Europe. In this case, points for blue jays would be much lower in Canada but high in Europe. We would also implement a global and local leaderboard so users can show off their progress and compare how they're doing to others.

We also want to make the point scheme more competitive by allowing the community to decide how rare a find is. As more people capture the same species, the lower that species' point value becomes. This would encourage users to go out and seek more diverse species. Similarly, players that capture an unidentified species first, would be able to earn more points.

Another addition we plan on making is a community tab. This page will show off pictures users are proud of and others would be able to vote for their favorites. Another major addition we will add is an event system. We would be able to post events on the map or have a whole page dedicated to it. Events could range from garbage cleanup to planting trees, and the players would get points and a badge for participating. We look forward to encouraging others towards bettering their local environment through Ecodex.

Share this project:

Updates