SproutGO

Inspiration

Most modern social media is designed to keep us indoors. We mindlessly scroll through algorithm-curated feeds that keep us glued to our screens and detached from the physical world.

In contrast to this, we wanted to see whether media could actually connect people with the real world. To answer this, we created SproutGO, a platform that encourages nature exploration and turns it into an engaging, shared, and educational experience.

What It Does

SproutGO is a location-based social media application that incentivizes users to explore their surroundings and build communities.

When users find an interesting plant, tree, or flower, they can take a picture of it through the app. The species pictured is automatically identified, and key information about that species is provided.

Each photo is geotagged, meaning its location is attached to it. This allows us to build a community-populated global map of discoveries made by SproutGO users.

Users are also given points for each capture, proportional to the rarity of the species. Species that users have never encountered before award extra points. New captures are added to each user’s PlantDex, a database of all the plants that user has encountered.

Beyond this, SproutGO serves as a media platform that allows users to publish blog-style posts about where they have been in nature and what they have found, including landscapes, trails, and plant discoveries. Plants in these photos are automatically identified and paired with relevant information.

How We Built It

On the frontend, we used React Native with Expo so we could ship one codebase to both iOS and Android while still getting full access to the camera, GPS, and navigation.

The live walk-around map is powered by Mapbox.

The backend is a Next.js API deployed on Vercel. Images are processed through it for plant identification, and it handles the social features such as posts and friends.

We used Prisma as our ORM so we could define our schema and query the database with full type safety instead of writing raw SQL.

Supabase handles authentication and session management. Plant photos are stored in Supabase Storage, with only the file path saved in the database.

Plant identification and the “chat with your plant” feature are both powered by the OpenAI API.

The whole project is structured as an npm workspace monorepo in TypeScript.

SproutGO System Architecture

Challenges We Ran Into

We ran into several challenges during the production of SproutGO.

One major challenge was populating our database. We tried various APIs to get images of species from the species name. However, many of them had inconsistent plant coverage and would not return image results for even common plants that we wanted to use as reference images in our library.

After about an hour, we settled on the iNaturalist API because of its coverage of a wide variety of plant species. We used it alongside a simple Python script to populate a CSV file, which we then entered into a Supabase Edge Function.

We also had issues with mobile deployment, which failed 12 times due to version incompatibilities within React.

Additionally, we had to optimize our frontend to prevent UI lag and improve responsiveness. We were able to overcome this through lazy loading and caching.

Accomplishments We Are Proud Of

We are proud of our ability to create an interactive geotagged map that shows photos taken by other users of the app.

We are also proud that we were able to integrate location data, species-specific information, capturing functionality, and a media platform into one cohesive experience.

What We Learned

During the hackathon, we discovered how much the right libraries can accelerate UI development.

Learning Expo Router for file-based navigation meant we spent no time wiring up stack and tab navigators by hand. React Native also helped us develop the hexagonal HexBadge component, which became one of the app’s signature visuals.

Google Fonts let us use Plus Jakarta Sans within seconds, giving SproutGO its distinct personality.

We also learned to treat colors, spacing, radius, and typography as a bridge between design and code. With the help of Figma, every component we created felt visually cohesive.

What’s Next for SproutGO

In the future, we plan to expand SproutGO by incorporating birds with similar functionality to plants. Users would be able to map birds, identify their species, learn relevant information, and earn points for their captures.

Furthermore, once the community-populated map grows sufficiently in certain areas, SproutGO could provide ecological insights about those regions. This could include calculating species richness and various measures of biodiversity, such as alpha diversity.

SproutGO could also help track changes in the distribution of plant species over time, highlighting the impact of climate change on the realized niches of different flora.

Share this project:

Updates