Inspiration
Plants can't talk... but what if they could?
We were inspired to make this project by Jake's mom, who is an avid plant mom. With almost 200 plants, it can be difficult to remember when to water plants, and take care of them. She has what we tend to call a green thumb -- but for people like us, taking care of a plant quickly becomes a wilted plant.
As such, we wanted to create a fun and interactive way to take care of our plants. Monitoring their vitals wasn't enough -- we really wanted to hear what they were thinking, what they were feeling, and how we could take care of them better.
We want everyone to be able to connect with their communities, their health, and their plants - and we think that this shouldn't be as difficult as it is.
And thus, Sprout was born (or sprouted, if you will)!
What it does (and how we built it)
Sprout is a virtual garden that allows you to monitor the health of your real-life plants. Sprout is connected to your phone number, and can send text reminders to water your plants based on a watering schedule, when the soil moisture of a pod-monitored plant is getting low, or when temperature / humidity conditions aren't being met.
Users enter their plants into their plant collection with the plant species and a name, and the dashboard gives each plant a personality and gives AI-powered care recommendations according to the plant species. Users can also add friends using their phone numbers, allowing them to see their friends' plant collections as well. Users can talk to their plants and ask about how they can care for those plants better -- and the plants remember their histories, such as how they were treated, what water cycles were missed, what kind of conditions they've been in...
Diving deeper (and some specs)
Sprout is mainly a Next.js application deployed on Vercel. For backend, we utilized uses Prisma ORM for a PostgreSQL database.
On the hardware side, the plants are monitored using what we call a pod (a raspberry pi connected to adafruit sensors), which track information (including and not limited to) about the plants it is connected to. Each pod can contain as many plants as you like, and tracks soil moisture (per connected plant), when a plant is water, air humidity, room temperature, and (if our sensor hadn't broken) light levels over time.
Each pod uses what we call automated telemetry to post sensor info to our backend on a regular schedule. Through an SSE, we deliver this information to the frontend as well. Upon each watering of a plant, the water sensor tracks and also engages in telemetry to update information. As such, each plant remembers when and how it was watered, the coinditions at the time, and most importantly... _ how you treat it. _
We built custom prompts for Gemini API to give plants personality according to how well they are being treated. To that effect, Sprout sends text messages to remind users to water their plants on time and during critical soil conditions. To accomplish this, we utilized Vonage's SMS API; the tone of these messages is... let's just say... directly correlated to how well you're treating the plant!
Additionally, we used Gemini to query about plant care information according to its species, such as optimal watering cycle, ideal soil conditions, ideal temperature, and more. Upon each data aggregation we checked that conditions were being met - and if they weren't, well, get ready to hear from one angry plant :)
Challenges we ran into
Unfortunately, at the very last 30 minutes of iteration, our Vercel deployment broke with no problematic logs -- only positive affirmations (which is nice to hear but also very troubling when trying to debug). As such, we were not able to present the online version of the site, as it is stuck on a much earlier version of the application.
Getting the hardware to agree with us was certainly a challenge. In the end, it was so rewarding seeing it all come together! Designing all of these complex systems and ensuring safety was a really fun challenge and we hope to be able to use our newfound skills going forward.
Accomplishments that we're proud of
Building this allowed us to think about database schema and synthesize class knowledge into real-world experience. Our database is incredibly compact, yet also efficient and it felt really cool to be able to apply class knowledge.
Additionally, our hardware configuration + the way that the server interfaces with the hardware is super unique for us, and we think it's one of the coolest applications of what we've learned so far. We're so incredibly happy to have been able to bring this project into the world.
What's next for Sprout
We want to fix our Vercel build issue and iterate on the product in order to create an all-in-one flowerpot at an affordable price-point, allowing everyone to become a Sprout! :)
Built With
- adafruit
- fastapi
- geminiapi
- next.js
- postgresql
- prismaorm
- python
- raspberry-pi
- typescript
- vercel
- vonagesms


Log in or sign up for Devpost to join the conversation.