Your personal garden companion β track plants, log care, and grow with confidence.
Cultivation is a native iOS app for gardeners of all skill levels. Whether you're keeping a single succulent alive or managing a full backyard garden, Cultivation keeps your plants organized, your care schedule on track, and your knowledge growing.
Track every plant in your collection with photos, care notes, and health status. Add plants from a curated database or create your own. See everything at a glance on your garden dashboard.
Never miss a watering, fertilizing, or pruning again. Reminders are tailored to each plant's needs, with weather-aware adjustments that adapt to your local conditions.
Log observations, milestones, and photos over time. Track soil conditions, spot problems early, and build a detailed history for every plant.
Set up your garden profile with your location and Cultivation automatically factors in your hardiness zone, climate, and seasonal patterns for smarter care recommendations.
Step-by-step tutorials for beginners, companion planting guides, and a searchable plant database β everything you need to level up your gardening knowledge.
A short skill assessment gets you personalized recommendations from day one. Beginner or expert, the experience adapts to you.
| Layer | Technology |
|---|---|
| Language | Swift 6 |
| UI | SwiftUI |
| Data | SwiftData |
| Architecture | Workspace + SPM package |
| Min iOS | 18.0 |
| Concurrency | Swift 6 strict concurrency |
Cultivation/
βββ GrowWise/ # App shell (entry point, lifecycle)
β βββ CultivationApp.swift
βββ GrowWisePackage/ # Primary development area
β βββ Sources/
β β βββ GrowWiseFeature/ # All UI and feature code
β β βββ GrowWiseServices/ # Business logic and services
β β βββ GrowWiseModels/ # SwiftData models
β βββ Tests/ # Unit + integration tests (72 passing)
βββ GrowWiseUITests/ # UI automation tests
- DataService β SwiftData persistence, async-safe
- ReminderService β Notification scheduling with weather adjustment
- LocationService β Hardiness zone + climate lookup
- PlantDatabaseService β Searchable plant catalog
- CloudSyncService β CloudKit sync (in progress)
- NotificationService β Local notifications
- Xcode 16+
- iOS 18.0+ simulator or device
- Swift 6
git clone <repo>
cd GrowWise
open GrowWise.xcworkspaceBuild and run the GrowWise scheme. The app uses in-memory SwiftData during UI tests β no migration needed for simulator runs.
# Unit tests
xcodebuild test -workspace GrowWise.xcworkspace -scheme GrowWisePackage \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro'
# UI tests
xcodebuild test -workspace GrowWise.xcworkspace -scheme GrowWise \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro'| Argument | Effect |
|---|---|
--uitesting |
Enables in-memory store, disables animations |
--skip-onboarding |
Skips onboarding flow |
--reset-data |
Clears UserDefaults (run before --skip-onboarding) |
--reset-onboarding |
Forces onboarding to show |
- β Core garden tracking (My Garden, plant detail, reminders)
- β Plant journal with soil logs
- β Onboarding flow with skill assessment
- β Location setup + hardiness zone
- β Tutorial system
- β 72 unit tests passing
- π CloudKit sync (in progress)
- π App Store submission
MIT