About Rooted

Inspiration

The idea for Rooted came from a mix of nostalgia and frustration. Growing up, apps like Pou made "keeping something alive" oddly compelling, you'd check in constantly just to make sure your virtual pet was fed and happy. But most wellness apps today rely on streaks, guilt-tripping notifications, or fake currencies to keep you engaged, which never actually translates into better habits.

We wanted to take that same emotional pull the desire to nurture something and watch it grow and redirect it toward something real. Instead of a digital pet that exists only to be fed, we built a plant whose health is a direct reflection of your health. If you drink water, sleep well, breathe, and reflect, the plant thrives. If you don't, it wilts. There's no way to "cheat" the system with points or streak freezes, the only way to help your plant is to actually help yourself.

What We Learned

  • Habit design is harder than app design. Mapping abstract wellness concepts (hydration, sleep, mindfulness) onto a single visual metaphor (a growing plant) forced us to think carefully about what "progress" should actually look like growth needed to feel gradual and earned, not instant or gamified.
  • Consistency matters more than completion. We learned that rewarding a single good day the same as a single bad day undermines the whole point. Building logic where sustained habits compound over time (and neglect visibly sets you back) taught us a lot about state design and time-based data modeling.
  • AI works best when it's subtle. Building "the Gardener" pushed us to think about prompt design differently instead of a generic chatbot, we wanted something that felt like a caretaker with context, referencing real habit data instead of giving generic advice.
  • We also picked up a lot of practical experience with Expo Router 6, structuring a cross-platform app, and integrating a custom Node.js backend with the Gemini API for real-time personalized suggestions.

How We Built It

  1. Planning the metaphor first. Before writing any code, we mapped out the four core wellness pillars (water, sunlight, soil, fresh air) to real-life actions (hydration, affirmations, sleep, movement/meditation), making sure each felt intuitive and non-arbitrary.
  2. Frontend. We used Expo SDK 54, Expo Router 6, and React Native to build a cross-platform app with a single codebase, focusing on simple, calming UI since the app is meant to reduce stress, not add to it.
  3. Data & state. Habit logs (water intake, sleep hours, reflections, breathing sessions) are stored via Supabase for persistence and AsyncStorage for lightweight local caching, which feeds into the logic that determines plant growth or decline.
  4. The Gardener (AI layer). We built a custom Node.js server that talks to the Google Gemini API, feeding it a summary of the user's recent habits so it can generate a contextual, plant-themed recommendation rather than a generic chatbot response.

Challenges We Faced

  • Making the AI feel like a "gardener," not a chatbot. It took several iterations of prompt engineering to get the Gemini-powered Gardener to stay in character, reference actual user data meaningfully, and avoid sounding like a generic wellness bot.
  • Designing for honesty over engagement. It was tempting to add streaks, badges, or hard notifications to drive retention, but we intentionally avoided anything that felt very manipulative which meant more design discussion around how to encourage consistency without dark patterns.
  • Backend syncing. Coordinating real-time habit updates between Supabase and local AsyncStorage caching (especially offline-first scenarios) required careful thought to avoid data conflicts.
Share this project:

Updates

Submission history