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
- Maya (The Novice): Lives in a low-light urban apartment. Wants to know exactly when to water her first "Snake Plant" without overthinking it.
- Leo (The Collector): Owns 50+ rare tropical plants. Needs a scalable way to track complex fertilization schedules and growth history.
- 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-compressorand 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.