Try it in the browser: https://rootera.byguto.com (the first load can take about 50 seconds). The Shipaton lab is on the Today tab. The web demo is not connected to the RevenueCat and Pl@ntNet APIs: purchases run as a labelled preview that charges nothing, and photo identification is off. Everything else works.

Inspiration

When I moved to São Paulo, I started keeping plants. Caring for them was harder than I expected: every guide says "water when the soil is dry", but nobody tells you how deep to check or how long your plant takes to dry.

My first idea was a soil sensor on an ESP32. Then I realized the same logic could work without hardware: a few quick soil checks are enough for an app to learn each plant's rhythm.

What it does

You check the soil in three layers (surface, middle, bottom). After a few watering cycles, Rootera learns how long your plant takes to dry, adjusts for the local weather and tells you when to check again, always showing why. Pl@ntNet identifies the plant from a photo.

How I built it

The app is Expo (React Native, TypeScript), with Reanimated for the animations, and runs on iOS, Android and the web. A FastAPI + SQLAlchemy backend stores every check as an event and runs the Plant Twin: a small set of explainable rules that turns your checks, species notes and the local weather (Open-Meteo) into a drying window. The rules are calibrated against university extension guides and covered by 210 tests.

The Shipaton lab runs the same engine on a virtual plant for up to 91 days in real climates, so you can watch Rootera learn in seconds.

How RevenueCat is used

Free keeps three plants. Rootera+ (monthly, quarterly or yearly) removes the limit and adds rooms and a growth diary. The paywall is a RevenueCat Paywall, subscribers manage their plan in the Customer Center, and the backend confirms every purchase with RevenueCat's REST API, so the app never unlocks anything on its own.

What I learned

This was the first app I built end to end: connecting a front end to a back end, designing the data model, and shipping a real subscription flow with RevenueCat.

Built With

Share this project:

Updates

Submission history