Розробка мобільного додатку для аптеки та доставки лікарських засобів
Додаток для аптеки — це не стандартний e-commerce з кнопкою «купити». Оборот лікарських засобів регулюється законодавством: рецептурні препарати вимагають верифікації рецепту, частина номенклатури не може продаватися дистанційно взагалі. Це накладає вимоги на архітектуру, які не можна додати після запуску.
Функціональне ядро додатку
Каталог лікарських засобів з пошуком за МНН (міжнародне непатентоване назву), торговому названю та штрих-кодом — базова, але нетривіальна задача. Фармацевтична база даних із синонімами, аналогами та групами препаратів вимагає повнотекстового пошуку з нормалізацією запитів: «парацетамол», «Парацетамол-УБФ», «ацетамінофен» мають давати перетинаючись результати.
На Flutter реалізуємо пошук через SearchDelegate з дебаунсом 300-500 мс, на бекенді — PostgreSQL з pg_trgm розширенням для fuzzy search або Elasticsearch для крупних каталогів (5000+ позицій). Штрих-код — через mobile_scanner (Flutter) або react-native-vision-camera з плагіном MLKit BarcodeScanning.
Рецептурний контроль. Для Rx-препаратів у кошику — блок оформлення до завантаження фото рецепту. Рецепт валідує фармацевт вручну (асинхронно) або через інтеграцію з ЕГІСЗ (в РФ). На UI: індикатор статусу рецепту в замовленні, push-сповіщення при зміні статусу через Firebase Cloud Messaging.
Геолокація та мережа аптек
Карта аптек з фільтрацією за наявністю препарату — ключова фіча для мереж. Реалізація: при пошуку товару показуємо не просто «в наявності / немає», а «в 3 аптеках поруч, найближча — 400 м». Це вимагає зберігання остатків по кожній точці в реальному часі (синхронізація з ERP) та геопросторових запитів у PostgreSQL через PostGIS або у Firebase Firestore з GeoHash.
Flutter: flutter_map (OpenStreetMap) або Google Maps SDK. Кластеризація маркерів через flutter_map_marker_cluster для мереж з 50+ точками — без цього карта нечитаема.
Доставка. Інтеграція з партнерськими службами доставки (СДЭК, Яндекс.Доставка, власні кур'єри) через webhook-модель: статусы замовлення оновлюються в реальному часі. Трекинг кур'єра на карті — через EventChannel (Flutter) або EventEmitter (React Native) з WebSocket або Firebase Realtime Database.
Push-сповіщення та напоминання
Додаток аптеки без push — половина цінності. Сценарії:
- замовлення готове до видачі
- кур'єр у дорозі / прибув
- напоминання про прийом препарату (якщо реалізован трекер прийому)
- сповіщення про надходження препарату в наявність (wishlist)
Firebase Cloud Messaging + flutter_local_notifications для локальних напоминань (трекер прийому). Для iOS обов'язковий запит UNUserNotificationCenter.requestAuthorization — без явного згоди пуши не приходять, й додаток не можна запитувати дозвіл при кожному запуску.
Трекер прийому лікарських засобів
Додаткова цінність: розписання прийому з напоминаннями, історія прийомів, курси лікування. Дані — у локальній БД (Isar для Flutter, MMKV для React Native) з синхронізацією в хмару. Напоминання через flutter_local_notifications з AndroidNotificationDetails з importance: Importance.high — інакше на Android 13+ сповіщення не вибе телефон з режиму сну.
Інтеграція з платіжними системами
Оплата картою через Stripe SDK (flutter_stripe) або ЮKassa (yookassa_payments_flutter). Для аптек з 18+ товарами (частина БАД, спиртові настойки) — вікова верифікація до оформлення замовлення. Apple Pay / Google Pay — через pay пакет (Flutter).
Самовивіз vs доставка впливає на логіку кошику: при самовивізі резервуємо товар на конкретній точці, при доставці — на складі. Це інша бізнес-логіка, що вимагає явної точки переключення у процесі оформлення.
Технічний стек та архітектура
Flutter + Clean Architecture (Domain / Data / Presentation). State management — Riverpod або Bloc. Бекенд: Node.js / Laravel з REST API, PostgreSQL. Сповіщення — Firebase. Карти — Google Maps або Яндекс.Карти.
Авторизація: SMS OTP через Firebase Auth або СМС.ру, не вимагає повної реєстрації — знижує бар'єр входу.
Строки
| Конфігурація | Строк |
|---|---|
| MVP: каталог, кошик, замовлення, самовивіз | 6-10 тижнів |
| + доставка з трекингом кур'єра | +3-4 тижні |
| + трекер прийому + повна мережа аптек | +4-6 тижнів |
Вартість розраховується індивідуально після аналізу вимог та інтеграцій.







