TrainerPad — CRM для тренеров, которая работает без сети и сама разруливает конфликты синхронизации
TrainerPad — CRM для тренеров, которая работает без сети и сама разруливает конфликты синхронизации
Персональные тренеры ведут клиентов и тренировки из зала, где интернета либо нет, либо он рвётся. Обычный PWA с кэшем эту проблему не решает: как только два устройства расходятся в офлайне, данные нужно мирить, а готового решения для этого нет.
Написал продукт один, с нуля: 626 коммитов за полгода, с января по июль 2026-го, около 67 000 строк TypeScript. Ядро — собственный движок синхронизации на 646 строк: очередь изменений в IndexedDB со своими правилами слияния (создание и правка схлопываются в создание, правка и удаление — в удаление), цикл синхронизации каждые 30 секунд и мгновенный запуск при возврате на вкладку, блокировка через navigator.locks, чтобы два открытых окна браузера не разошлись в конфликт, догрузка данных с сервера с нахлёстом в две секунды и приоритетом локальных изменений, принудительный пересинк и локальный пересчёт баланса клиента вместо доверия серверу.
Продукт работает в проде: сайт отвечает по HTTPS с настроенными security-заголовками, рядом живут админка и собственный мониторинг ошибок.