Всё в этом продукте держится на записи и её статусе. Статусов шесть — ожидает оплаты, оплачена, идёт, в архиве, в архиве с отзывом, отменена, — и от статуса зависит остальное: что клиент видит во вкладке «Чат», принимает ли чат сообщения, откроется ли сокет для звонка и когда двигаются деньги. Бонусы клиента и реферальный процент начисляются на переходе в «оплачено», деньги специалиста — на переходе в архив, комиссия сервиса — при одобрении выплаты. Деньги, не привязанные к событию, потом кто-то считает вручную.
Решает всегда сервер: приложение показывает свободные часы, статус оплаты и кнопку звонка, но ни одного из этих решений не принимает. Бэкенд — Django 4.2 с Channels на Daphne и PostgreSQL 16: два модуля Django, API для приложения и админка, 15 моделей данных, 33 метода HTTP API для приложения и одно WebSocket-подключение — около 5 600 строк Python без миграций.
Мобильная часть — одна кодовая база на Flutter для iOS и Android: состояние на MobX, звонок на flutter_webrtc, около 10 000 строк Dart без кодогенерации. В одном аккаунте две роли, и переключаются они прямо в приложении; у каждой по 5 вкладок: у клиента — поиск специалиста, новости, бонусы, чат и профиль, у специалиста — расписание, новости, финансы, чат и профиль.
Лендинг и вёрстка админки собраны на Vite. Это MVP, последний коммит — январь 2024 года. Путь собран целиком — от записи и оплаты до звонка, выплаты и админки, — и всё, кроме админки, можно пройти на стенде в начале страницы.



