Розробка мобільного додатку для волонтерства
Волонтерський додаток вирішує конкретну операційну задачу: з'єднати організації з добровільцями, координувати участь у подіях, фіксувати години та автоматизувати верифікацію. Це не просто список заходів — тут важливі геолокація, сповіщення, звітність та управління ролями.
Геолокація та пошук заходів поблизу
Карта з заходами — MapKit (iOS) або Google Maps SDK / Yandex MapKit (Android). Кластеризація маркерів обов'язкова при великій кількості подій: MKAnnotationView з MKClusterAnnotation на iOS, ClusterManager на Android через Maps Utils.
Пошук «поблизу» — запит до сервера з параметрами lat, lng, radius. На сервері — PostGIS ST_DWithin() або Haversine формула. Фільтр по категорії, даті, організації.
Сповіщення про нові заходи в радіусі — геофенсинг через CLLocationManager.startMonitoring(for: CLCircularRegion) (iOS) або Geofencing API з Google Location Services (Android). Регіон спрацьовує при вході — додаток отримує background wake та може показати сповіщення. Лімітація iOS: 20 одночасно моніторуваних регіонів. Для великої кількості заходів — оптимізувати: моніторити регіони навколо поточної позиції, оновлювати набір при значному переміщенні користувача.
Реєстрація та управління участю
Волонтер реєструється на захід — створюється запис volunteer_event. Організатор підтверджує або відхиляє. Push-сповіщення про зміну статусу — FCM/APNs.
Список «мої заходи» з фільтром по статусу (предстоящі, минулі, очікують підтвердження). Скасування участі — кнопка з confirmation dialog та обробкою business-правила (не можна скасувати за < 2 години до початку, наприклад).
Check-in сценарії:
-
QR-код: організатор показує QR, волонтер сканує через
AVCaptureSession+CIQRCodeFeature/AVMetadataMachineReadableCodeObject. Декодований токен відправляємо на сервер для валідації. -
Геолокація:
CLLocationManager.requestLocation()повертає поточні координати, сервер перевіряє дистанцію до точки заходу. - Ручна відмітка організатором: список присутніх з checkboxами.
Облік волонтерських годин
Після завершення заходу — автоматичне нараховування годин або запит на підтвердження організатором. Історія годин у профілі: по місяцях, по категоріям, загалом за рік.
Сертифікати учасника — генерація PDF на сервері через WeasyPrint або Puppeteer, завантаження в додатку через URLSession.downloadTask. На iOS відкриваємо через UIActivityViewController, який пропонує зберегти у «Файли», надрукувати або поділитись.
Ролі та onboarding
Дві основні ролі: волонтер та організатор. Організатор створює заходи, керує списком учасників, верифікує години. Волонтер — реєструється, відмічається, видить історію.
Верифікація волонтера (для організацій, де важлива перевірка особистості) — завантаження документа + ручна перевірка адміністратором. Статус верифікації в профілі.
Onboarding — вибір цікавих категорій волонтерства (екологія, допомога пожилим, тварини, культура) одразу після реєстрації. Ці теги використовуються для персоналізації стрічки заходів та налаштування push-сповіщень.
Стек
iOS: SwiftUI + MapKit + CoreLocation + AVFoundation (QR), MVVM + Combine. Android: Jetpack Compose + Google Maps SDK + Location Services + CameraX (QR через ML Kit BarcodeScanning). React Native / Flutter — якщо потрібна одна кодова база з нативною картою.
Терміни
Стрічка заходів + карта + реєстрація + профіль — 4–6 тижнів. Check-in (QR + геолокація) + облік годин + сертифікати + ролі організатора — 2–3 місяці. Вартість розраховується після аналізу вимог.







