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
- expo.io
- fastapi
- open-meteo
- plantnet
- python
- react-native
- react-native-svg
- reanimated
- revenuecat
- sqlalchemy
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.