Розробка мобільного додатку для садівників та городників
Уявіть: садівник завантажує фото підозрілої плями на листку помідора — через секунду додаток видає діагноз (фітофтора, 87% впевненості) і рекомендує обробку мідним купоросом. Все це без інтернету, на дачі в глибинці. Реалізувати таке на iOS та Android — завдання, де кожна деталь вирішує: від вибору моделі машинного навчання до фонової синхронізації.
Ми створюємо додатки, в яких CV-моделі, погодні тригери та офлайн-режим працюють як єдиний механізм. За плечима — 6 років мобільної розробки та 50+ проектів у AgriTech. Складність не в окремих компонентах, а в їхній безшовній інтеграції: датчик дощу через OpenWeatherMap, локальна база на SQLite, розпізнавання за допомогою CoreML або TFLite — і все це має стабільно працювати на пристроях п'ятирічної давності.
Як працює розпізнавання рослин?
Центральна фіча — визначення рослин і хвороб по фото. Два підходи: хмарний API (Plant.id, PlantNet) або on-device модель (CoreML/TFLite). Порівняємо:
| Параметр | Cloud API (Plant.id / PlantNet) | On-device (CoreML / TFLite) |
|---|---|---|
| Точність | 85–95% | 70–80% |
| Швидкість | 1–3 секунди (залежить від мережі) | 0.2–0.5 секунди |
| Інтернет | Потрібен | Не потрібен |
| Вартість | Платна підписка ($0.01–0.10 за запит) | Безкоштовно (тільки розробка) |
| Офлайн | Ні | Так |
On-device розпізнавання працює в 5 разів швидше за хмарне — 0.2 с проти 1–3 с — але точність нижча на 15–20%. Для дачі без інтернету це єдиний варіант.
Plant.id API повертає назву, хвороби з confidence score та рекомендації щодо лікування. Фото кодується в base64, надсилається POST-запитом, відповідь містить suggestions з probability. Важливо: API вимагає добре освітлений знімок листка або квітки — фото загального плану дає низьку точність. Ми обов'язково навчаємо користувача правильній зйомці.
struct PlantIdentificationRequest: Encodable { let images: [String] // base64 let modifiers: [String] // ["crops_fast", "similar_images"] let plant_language: String // "ru" let plant_details: [String] // ["common_names", "url", "description", "treatment"] } On-device варіант використовує моделі від iNaturalist або навчені на датасеті PlantVillage (54 000 зображень, 38 класів хвороб листків). Точність нижча за хмару на 15–20%, але повністю офлайн.
Чому важлива інтеграція з погодою?
Звучить просто, але головна помилка — ставити сповіщення з фіксованим часом і дивуватися, чому користувачі скаржаться на пропущені поливи. Проблема: сповіщення не перераховуються при зміні опадів.
Правильна логіка: щоранку запитуємо прогноз погоди через OpenWeatherMap API або Apple WeatherKit. Якщо прогнозується дощ > 5 мм — пропускаємо полив і скасовуємо сповіщення через UNUserNotificationCenter.removePendingNotificationRequests. Це вимагає фонового завдання: BGAppRefreshTask на iOS або WorkManager на Android.
На Android використовуємо WorkManager з PeriodicWorkRequest та обмеженням NetworkType.CONNECTED. Не AlarmManager напряму — на Android 12+ потрібен дозвіл SCHEDULE_EXACT_ALARM, який користувачі рідко надають.
Економія часу на ручному плануванні поливу — до 2 годин на тиждень. Зниження витрат на воду за рахунок розумного обліку опадів — до 30% у сезон.
Що входить в роботу
Замовляючи розробку під ключ, ви отримуєте:
- Архітектуру та вибір стеку (iOS/Android/крос-платформа)
- Інтеграцію всіх API (погода, розпізнавання)
- Офлайн-базу рослин з кешуванням зображень
- Налаштування пуш-сповіщень та фонових завдань
- Документацію з експлуатації та посилання на доступи
- Допомогу з публікацією в App Store та Google Play
- Гарантію на код — 3 місяці безкоштовної підтримки
Офлайн та база рослин
Локальна база рослин (назва, опис, правила догляду, календар посіву) зберігається в SQLite. Для 500–1000 записів використовуємо Room на Android, Core Data або GRDB на iOS. Зображення кешуються при першому перегляді з LRU-політикою (Kingfisher на iOS, Coil на Android).
Дача без інтернету — реальність. Всі базові функції (додавання рослини, перегляд порад, встановлення нагадувань) працюють без мережі. Синхронізація при відновленні з'єднання — через чергу відкладених операцій.
Погодна інтеграція
OpenWeatherMap — стандарт для таких додатків: безкоштовний тариф покриває 1000 запитів на день. WeatherKit на iOS (з новітніх версій) точніший і не вимагає власного ключа, але доступний тільки на платформах Apple. Для городнього додатку важлива не тільки температура, а й humidity, uvi, rain (опади за 1 та 3 години) — ці поля доступні в current ендпоінті OWM.
Процес роботи
- Аналітика — визначаємо набір фіч: які рослини (тільки город чи сад+кімнатні), чи потрібна соціальна складова, чи потрібна офлайн-база хвороб.
- Проектування — створюємо архітектуру, обираємо стек (нативний або крос-платформа).
- Розробка — офлайн-база → додавання рослин → розклад поливу зі сповіщеннями → погодна інтеграція → розпізнавання. Розпізнавання — останнім, оскільки API-ключі та тарифікація потребують узгодження.
- Тестування — покриваємо основну логіку unit-тестами, проводимо польові випробування на реальних пристроях.
- Деплой — публікація в сторах, налаштування моніторингу Crashlytics та аналітики.
Отримайте консультацію щодо вашого проекту — ми допоможемо обрати оптимальний стек та оцінити терміни.
Орієнтири за термінами
| Конфігурація | Терміни |
|---|---|
| База + розклад + погода | 5–7 тижнів |
| З розпізнаванням рослин/хвороб | 9–12 тижнів |
| Повний функціонал (офлайн + соціальна мережа) | 12–16 тижнів |
Щоб оцінити ваш проект, зв'яжіться з нами — ми підготуємо точний кошторис і запропонуємо оптимальне рішення. Гарантуємо проходження App Store Review та Google Play Review з першого разу.







