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







