Reviewed-on: #4
Merge pull request 'fix: completed tasks reappearing as overdue (#2)' (#4) from fix/issue-2-task-completion-persistence into master
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
- Clone the repository
- Open
PlantGuide.xcodeprojin Xcode - Configure your API keys in
App/Configuration/APIKeys.swift:- PlantNet API key (get one at my.plantnet.org)
- Trefle API key (get one at trefle.io)
- Set up CloudKit:
- Enable iCloud capability in Signing & Capabilities
- Create CloudKit container:
iCloud.com.yourteam.PlantGuide
- 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
Languages
Swift
84.4%
Cython
15.6%