Completed Not Published Public Repository

PlantSnap AI

A React Native mobile app built as a Replit Bounty contract — converting an existing web app into a cross-platform iOS and Android experience. Users snap or upload a photo of any plant to identify it, monitor its health, check repotting needs, determine watering requirements, and generate a schedule that syncs to their device calendar. Delivered in full; never deployed due to the client going silent during App Store submission.

React Native Expo TypeScript Expo Router Zustand TanStack Query Expo Camera
GitHub ← Back to Projects
PlantSnap AI app screenshot

Project Overview

PlantSnap AI started as a Replit Bounties contract — a UK-based client posted a bounty to convert their existing web app into a native mobile application. The scope expanded into a full plant care companion: identification as the entry point, with health monitoring, repotting checks, watering needs assessment, and calendar-synced schedules built on top.

The app targets both iOS and Android from a single React Native codebase and connects to a custom backend. The client-side architecture is intentionally decoupled behind a configurable API layer so it can work with any compatible backend.

The full build was delivered. Payment was never received from Replit. During the deployment phase — specifically the App Store submission process — the client went silent and the engagement ended. The app was never published. The source code is publicly available on GitHub.

Core Features

  • Plant identification — snap a photo with the in-app camera or select one from the camera roll; the app identifies the plant and returns its name, species, and care profile
  • Health monitoring — track the ongoing health status of each saved plant, with condition assessments based on visual and care history data
  • Repotting check — assess whether a plant needs to be repotted based on its current data and care profile
  • Watering needs — determine how much and how often a plant should be watered, factoring in species requirements and local weather conditions
  • Watering schedule + calendar sync — generate a personalised watering schedule and add it directly to the user's device calendar so reminders surface at the right time
  • Plant collection — save and organise identified plants, with per-plant detail screens for care instructions, health history, and watering logs

Tech Stack

  • React Native + Expo — cross-platform iOS and Android from a single codebase; Expo managed workflow for simplified build and OTA updates
  • Expo Router — file-system-based navigation with tab and stack layouts, matching the app's screen hierarchy
  • TypeScript — strict typing across the full codebase including API types, store shapes, and component props
  • Zustand — lightweight global state for auth session, plant collection, and UI preferences
  • TanStack Query — server-state management, caching, and background refetching for plant and weather data
  • Expo Camera + Image Picker — in-app camera for live capture; image picker for selecting from the camera roll
  • AsyncStorage — local persistence for collection data and user preferences
  • JWT authentication — user accounts with secure token-based auth
  • Weather API — local weather data surfaced contextually alongside watering recommendations
  • Light & dark theme — full theme switching with user preference persisted locally
← Imelda Yayala
Next Case Study → SeamlessVisa