PlantTime

A plant identification and care management iOS app built with SwiftUI.

Features

  • Plant Identification - Identify plants using on-device ML (Core ML) with PlantNet API fallback
  • Plant Collection - Save and organize your identified plants
  • Room Organization - Group plants by room (Kitchen, Living Room, Bedroom, etc.)
  • Care Scheduling - Track watering, fertilizing, repotting, pruning, and pest control
  • Today View - Dashboard showing overdue and today's care tasks
  • Progress Photos - Capture growth photos with time-lapse playback
  • Photo Reminders - Scheduled reminders for progress photos (weekly, bi-weekly, monthly)
  • CloudKit Sync - Sync plants and care data across devices via iCloud
  • Dark Mode - Full dark mode support with semantic color tokens

Screenshots

Coming soon

Requirements

  • iOS 17.0+
  • Xcode 15.0+
  • Swift 5.9+

Architecture

Clean Architecture + MVVM with three layers:

Presentation (SwiftUI Views + ViewModels)
    ↓
Domain (Use Cases + Entities + Repository Protocols)
    ↓
Data (Repository Implementations + Data Sources)

Key patterns:

  • Dependency Injection via DIContainer
  • Actor-based concurrency for thread safety
  • Core Data + CloudKit for persistence and sync

Setup

  1. Clone the repository
  2. Open PlantGuide.xcodeproj in Xcode
  3. Configure your API keys in App/Configuration/APIKeys.swift:
  4. Set up CloudKit:
    • Enable iCloud capability in Signing & Capabilities
    • Create CloudKit container: iCloud.com.yourteam.PlantGuide
  5. Build and run

ML Model

Uses PlantNet-300K ResNet50 for on-device plant classification:

  • Input: 224x224 RGB image
  • Output: 1,081 plant species probabilities

License

MIT

Description
No description provided
Readme 823 KiB
Languages
Swift 84.4%
Cython 15.6%