# 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`: - PlantNet API key (get one at [my.plantnet.org](https://my.plantnet.org)) - Trefle API key (get one at [trefle.io](https://trefle.io)) 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