Розробка мобільного додатку для репетиторів
Більшість репетиторів працюють через WhatsApp та Google Calendar. Запит на окремий додаток з'являється, коли учнів більше 10–15 та розклад починає конфліктувати, а оплата втрачається у перепискаї. Завдання додатку — автоматизувати запис, напоминання та оплату без втрати особистого контакту.
Головна архітектурна задача — двустороннє розписання
Репетитор задає слоти доступності. Учень бачить вільні вікна та бронює. Звучить просто, поки не сталкуєшся з timezone hell: репетитор у Москві, учень у Берліні. Якщо зберігати час в локальному форматі без UTC-нормалізації — заняття «зсуваються» при переході на літній час. Рішення: все в UTC у базі, конвертація на клієнті через intl пакет Flutter з DateFormat та TimeZone із timezone пакета. Відображення — завжди в локальному часі пристрою.
Конфлікт слотів — окрема історія. Якщо два учні одночасно відкривають екран запису на одне час, обидва бачать слот як вільний. Без оптимістичної блокування на рівні БД (PostgreSQL SELECT FOR UPDATE або advisory locks) один з них отримає успішну відповідь, другий — мовчазну помилку. На клієнті: обробка HTTP 409 з людськочитаним сообщенням «Час только що займав інший учень».
Стек
Flutter cross-platform — iOS + Android з однієї кодової бази. Стан розписання — Riverpod AsyncNotifier з кешуванням через hive: заняття доступні офлайн. Відеозвонки — інтеграція Agora RTC SDK (Flutter пакет agora_rtc_engine) або Jitsi Meet SDK, якщо потрібно self-hosted. Для запису уроків — Agora Cloud Recording API з збереженням у S3.
Платежи: YooKassa або Stripe з вебхуками підтвердження. Важливо: списання лише після підтвердження заняття, не в момент запису — інакше скасування перетворюються у nightmare для support.
Функціональне ядро:
- Каталог репетиторів з фільтрами (предмет, рівень, ціна за годину)
- Онлайн-розписання з синхронізацією у Google Calendar через Calendar API v3
- Вбудований чат — Firebase Realtime Database, медіафайли (ДЗ фото) через Storage
- Відеосвязь прямо в додатку
- Історія занять та прогрес учня
- Автоматичні напоминання за 24 години та за 1 годину — FCM scheduled notifications через серверний cron
Монетизація та ролі
Два сценарії: B2C-маркетплейс (платформа берет комісію) або white-label для конкретного репетитора/центра. У другому разі вивільня каталог, залишаємо розписання + оплата + комунікація. Архітектура повинна підтримувати обидва варіанти — флаг конфігурації на рівні AppConfig, а не хардкод.
Часова шкала
MVP для одного репетитора (розписання, чат, оплата): 6–9 тижнів. Маркетплейс з каталогом, відео, аналітикою для репетитора: 14–18 тижнів. Вартість розраховується індивідуально після аналізу вимог.







