GreenThumb

Consumer

Original Idea

Plant Watering Reminder A mobile app that tracks your houseplants, learns their watering needs based on species and environment, and sends timely reminders.

Product Requirements Document (PRD): GreenThumb

1. Executive Summary

GreenThumb is a premium mobile application designed to eliminate the guesswork of indoor gardening. By combining an extensive botanical database with AI-powered identification and local-first architecture, GreenThumb provides users with hyper-personalized watering and fertilization schedules. The app ensures plant survival through time-zone-aware reminders and an offline-resilient activity log, catering to everyone from novice "plant parents" to professional hobbyists.


2. Problem Statement

Houseplant owners struggle with inconsistent care routines due to a lack of species-specific knowledge and the impact of varying home environments (humidity, light, temperature). Existing solutions often lack the reliability of offline logging or the accuracy of AI-driven diagnostics, leading to preventable plant death, financial loss, and user frustration.


3. Goals & Success Metrics

  • User Retention: Achieve a Day-30 retention rate of >40% by providing high-value care automation.
  • Plant Health: 80% of users report improved plant health after 3 months of use.
  • Engagement: Average user logs at least 2 care activities per week.
  • Technical Performance: <200ms latency for care logging (via optimistic UI) and 99.9% push notification delivery accuracy.

4. User Personas

  1. Maya (The Novice): Lives in a low-light urban apartment. Wants to know exactly when to water her first "Snake Plant" without overthinking it.
  2. Leo (The Collector): Owns 50+ rare tropical plants. Needs a scalable way to track complex fertilization schedules and growth history.
  3. Sarah (The Frequent Traveler): Needs to see a history of care and set up "vacation modes" or clear logs for her house-sitter.

5. User Stories

  • As a user, I want to photograph my plant so that the app automatically identifies the species and suggests a care schedule.
  • As a user, I want to log watering activities even when my phone is offline so that my plant's history remains accurate.
  • As a user, I want to receive notifications at 9:00 AM my local time so that I can care for my plants before work.
  • As a user, I want to adjust the suggested schedule based on my specific room's humidity so that the care is tailored to my environment.

6. Functional Requirements

6.1 Plant Management

  • Profile Creation: Users can add plants with nicknames, photos, and room locations.
  • AI Identification: Integrated camera feature to identify species using Plant.id.
  • Smart Scheduling: Logic-based engine that calculates watering frequency using Perenual API data and local weather adjustments.

6.2 Care Logging & Tracking

  • Offline-First Log: Users can mark watering, misting, or fertilizing as "Done" without an internet connection.
  • Growth Journal: Ability to upload photos over time to see a visual timeline of plant growth.

6.3 Notifications

  • Time-Zone Aware Reminders: Push notifications for watering/fertilizing that respect the user's local "Quiet Hours."
  • Snooze Functionality: Users can snooze a reminder for 2 hours or 1 day.

7. Technical Requirements

7.1 Tech Stack (2026 Standards)

  • Frontend: React Native 0.83 (New Architecture/Fabric enabled) via Expo SDK 55.
  • State Management & Offline DB: WatermelonDB for local-first persistence; TanStack Query v6 for server state.
  • Backend: Node.js v22+ with NestJS 11.1.12.
  • Database: PostgreSQL 18 (utilizing UUID v7 and range partitioning for logs).
  • Auth: Firebase Authentication with a NestJS-managed HttpOnly, Secure, SameSite=Strict session cookie pattern.
  • Task Queue: BullMQ with Redis for managing millions of scheduled notification jobs.

7.2 Core Integrations

  • Plant Identification: Plant.id (Kindwise) API v3.
  • Botanical Data: Perenual API (Care Guides & Hardiness Maps).
  • Push Notifications: Native Firebase Cloud Messaging (FCM) for direct delivery and detailed analytics.
  • Storage: AWS S3 with Transfer Acceleration and Intelligent-Tiering.

8. Data Model

8.1 Entities

  • User: id (UUIDv7), email, timezone_id (IANA), premium_status.
  • Plant: id, user_id, species_id, nickname, room_name, image_url, is_archived.
  • Species: id, common_name, scientific_name, base_watering_days, light_requirement_level.
  • CareActivity: id, plant_id, action_type (WATER/FERTILIZE/PRUNE), timestamp (UTC), is_synced, notes.

8.2 Relationships

  • A User has many Plants.
  • A Plant belongs to one Species care template.
  • A Plant has many CareActivities (History).

9. API Specification (Key Endpoints)

  • POST /auth/exchange-token: Receives Firebase ID token, returns HttpOnly session cookie.
  • POST /plants/identify: Proxy to Plant.id; strips EXIF metadata before processing.
  • GET /plants/:id/history: Returns paginated activity logs.
  • PATCH /plants/:id/schedule: Manually overrides the AI-suggested watering frequency.

10. UI/UX Requirements

  • Organic Design System: Use soft greens, earth tones, and rounded components (Haptic feedback on care actions).
  • Optimistic UI: When a user taps "Watered," the checkmark appears immediately; background sync happens silently.
  • Image Handling: Progress bars for S3 uploads; client-side compression to 1440px (0.8 quality) using react-native-compressor.

11. Non-Functional Requirements

  • Performance: App must be usable within 1.5 seconds of launch.
  • Reliability: Offline logs must sync automatically within 10 seconds of regaining high-quality connectivity.
  • Security: Signed S3 URLs (SigV4) for all image uploads; URLs expire after 15 minutes.

12. Out of Scope (Phase 1)

  • Social sharing or "Plant Community" feeds.
  • In-app marketplace for physical goods.
  • Direct hardware integration (Bluetooth moisture sensors).

13. Risks & Mitigations

  • Risk: Incorrect AI Identification leads to overwatering.
    • Mitigation: Always present "Care Suggestions" as editable and include a "Not my plant?" fallback search.
  • Risk: Push Notification Fatigue.
    • Mitigation: Group notifications by "Room" (e.g., "3 plants in the Living Room need water").

14. Implementation Tasks

Phase 1: Project Setup & Infrastructure

  • [ ] Initialize React Native 0.83 project with New Architecture enabled.
  • [ ] Set up NestJS 11.1.12 backend with PostgreSQL 18.
  • [ ] Configure Firebase Admin SDK and implement Stateless Session-Cookie auth.
  • [ ] Deploy Redis instance for BullMQ task management.

Phase 2: Core Plant Engine

  • [ ] Implement Plant.id API integration for species identification.
  • [ ] Build the "Add Plant" flow with react-native-compressor and S3 Signed POST URLs.
  • [ ] Create the Smart Schedule algorithm using Perenual care data.
  • [ ] Set up WatermelonDB for local-first storage of plant profiles.

Phase 3: Care Logging & Notifications

  • [ ] Implement "Outbox Pattern" for offline-first care activity logging.
  • [ ] Build BullMQ worker for time-zone aware FCM push notifications.
  • [ ] Create the "Activity Log" view using Shopify FlashList for performance.
  • [ ] Add "Snooze" and "Mark as Done" actions directly to push notification payloads.

Phase 4: Optimization & Launch

  • [ ] Implement S3 Intelligent-Tiering and lifecycle rules for image cost optimization.
  • [ ] Conduct load testing for the notification feeder (target: 100k notifications/min).
  • [ ] Final UI polish and accessibility audit (WCAG 2.1 compliance).
  • [ ] Submit to App Store and Google Play via EAS Build.