Разработка мобильного приложения для аптеки и доставки лекарств
Приложение для аптеки — это не стандартный 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 недель |
Стоимость рассчитывается индивидуально после анализа требований и интеграций.







