Sadok.app — приложение, в котором садик ведёт детей, посещаемость и оплаты
Мобильная CRM для детских садов: родители, воспитатели и администрация в одном продукте, со счетами, сверкой банковских транзакций и онлайн-оплатой. iOS и Android из одного кода на Flutter, сервер на Python.

Перенести работу детского сада в приложение — вместе с деньгами
Sadok.app — украинское приложение-CRM для детских садов, центров развития и кружков. Заказчица пришла с задачей, которая только звучит просто: дать родителям связь с садиком в телефоне. За этим стоял учёт — группы, посещаемость, кружки, питание и ежемесячные счета, которые садик до того вёл в таблицах и мессенджерах. Задача — разработать мобильное приложение на Flutter сразу под iOS и Android, с серверной частью, которая выдержит учёт реального заведения.
Это не одно приложение, а три продукта в одном
Родитель открывает приложение на минуту: посмотреть, в садике ли ребёнок и что там в группе. Воспитатель работает в нём смену: отмечает присутствующих, ведёт списки, добавляет фото. Администрация закрывает месяц: формирует счета, сверяет оплаты с банковской выпиской, готовит отчёты. Три разных сценария, три набора прав — и общие данные под ними.
Отдельный уровень сложности — деньги. Ошибка в счёте это не баг в бэклоге, а разговор с родителями. Поэтому финансовую часть строили со статусами, черновиками, сверкой транзакций и возможностью откатить, а не как простую сумму к оплате.
Вход без пароля
Номер телефона и код из SMS. Номер уже привязан к ребёнку, поэтому приложение сразу показывает, кого нашло, и просит подтвердить: да, это мой ребёнок.
Три роли в одном коде
Родители, воспитатель и работник сада заходят через одно приложение, но видят разные разделы. Ролевая модель заложена на сервере, а не спрятана кнопками в интерфейсе.
Каталог садиков
Поиск заведения списком и на карте, фильтр по области и городу, расстояние до садика. В карточке — рейтинг, описание, программы и кружки.
Кружки с проверкой конфликтов
Система сверяет расписание: если ребёнок уже записан на другое занятие в тот же день и час, приложение не даёт создать накладку и объясняет причину.
Группы и распорядок
Группа собрана как справочник: кто её ведёт, сколько мест занято, чем занимаются по часам. Рядом — списки детей и родителей с телефонами.
Посещаемость
Воспитатель отмечает присутствующих и отсутствующих — и по группе, и по отдельному занятию со временем и стоимостью. Родители видят статус своего ребёнка.
Календарь событий
Месячный вид с фильтрами по типу: дни рождения воспитателей и родителей, события группы, события заведения. Администрация создаёт событие прямо из приложения.
Чат с быстрыми ответами
Переписка с воспитателем, видеосообщения в ленте и набор готовых фраз для типовых ситуаций — родитель отвечает одним касанием, не набирая текст на ходу.
Новости и галерея
Садик публикует новость с фото, группа ведёт собственную фотогалерею по датам. Родителям не нужно искать снимки по чатам.
Опросы
Заведение создаёт опрос с произвольными полями и видит активные в общей панели.
Счета со статусами
Черновик → к оплате → оплачено, с возвратом назад. В счёте — период, плательщик, группа, строки услуг, перенесённая задолженность и итог.
Формирование за период
Администрация выбирает месяц — система начисляет всем по услугам, кружкам и питанию, остаётся проверить и опубликовать.
Онлайн-оплата MonoPay
Родитель оплачивает счёт прямо из приложения. Реквизиты заведения можно скопировать, если удобнее платить вручную.
Сверка с банком
Транзакции подтягиваются из банка и раскладываются на обработанные и неизвестные. Неизвестную бухгалтер сопоставляет со счётом вручную — деньги не теряются между выпиской и начислением.
Питание отдельным учётом
Приёмы пищи с расписанием, меню по группам и собственный баланс, который пополняют отдельно от ежемесячного счёта.
Отчёты с выгрузкой
Сводка по группам и детям за месяц: баланс, отмеченные приёмы пищи, всего присутствующих и общая сумма. Выгружается файлом.
От номера телефона до карточки ребёнка за три экрана
Никаких регистраций с почтой и паролем — родителям нужно приложение, а не аккаунт.

Найти садик, посмотреть программы, записать на кружок

Всё о ребёнке в одном месте, а не в трёх чатах

Садик цифрами на одном экране
Главный экран администратора — это не меню, а сводка за день: дети присутствующие, отсутствующие и те, кого ещё не отметили; проведённые занятия в кружках и начисленные за них деньги; наполненность мест, новости и активные опросы. Дальше из тех же данных формируется счёт.

Справочники, из которых собирается всё остальное

Самая сложная часть — не начислить, а сойтись с банком
Начислить сумму легко. Сложно понять, кто из родителей уже заплатил, если платёж пришёл с чужим назначением или без номера счёта. Поэтому транзакции из банка подтягиваются в приложение и делятся на обработанные и неизвестные — последние бухгалтер сопоставляет со счётом руками.

Отдельный учёт, потому что считается иначе
Ежемесячная услуга стоит одинаково независимо от того, сколько дней ребёнок ходил. Обед — нет: его считают по факту, по отметкам воспитателя. Две разные механики в одну строку счёта не помещаются, поэтому питание живёт собственным модулем с отдельным балансом.

На чём сделали
Flutter дал обе платформы из одного кода — для продукта, который растёт модулями, это экономия на каждом следующем изменении, а не только на первом релизе. Python на сервере держит роли, учёт и финансовую часть. Сложнее всего было не нарисовать экраны, а развести три аудитории так, чтобы каждая видела своё приложение. Как этот интерфейс спроектирован — в отдельном кейсе о дизайн-системе.