Scubalog
Whitelabel-платформа для дайвинг-сообществ и школ: курсы, ученики, инструкторы и чат в реальном времени. Каждый клуб работает под своим именем и своим логотипом.
- Заказчик
- Собственный продукт, scubalog.ru
- Годы
- 2025 — по сей день
- Объём работ
- Продукт, интерфейс, сервер, интеграции, эксплуатация
- Стек
- Next.js и TypeScript, React, Prisma и SQLite, Server-Sent Events
- Команда
- Инга — продукт и проект, Геннадий — разработка
Задача
Дайв-клуб живёт в мессенджерах и таблицах: группа курса в одном чате, инструкторы в другом, списки учеников и их прогресс — в файле, который ведёт кто-то один. Учебный процесс при этом требует памяти: кто на каком курсе, что сдано, что назначено, какие заметки оставил инструктор.
Нужна была одна система, в которой общение и учёт живут вместе, — и так, чтобы каждый клуб выступал под собственным брендом, а не под чужим.
Что сделали
- Whitelabel: клуб как отдельная организация со своим логотипом, составом и ролями.
- Учебная часть: курсы, зачисления, задания, заметки инструктора по каждому ученику.
- Чат четырёх видов: общий по клубу, инструкторский, по курсу и личные сообщения.
- В чате — реакции, опросы, вложения, ответы на сообщения, правка и удаление, отметки о прочтении.
- Пуш-уведомления и установка как приложение: платформа работает с телефона, где дайверы и находятся.
- Вход по одноразовому коду на почту, без паролей.
Результат
Десятки тысяч сообщений в сутки
В реальном времени, для тысяч пользователей.
Почему так мало движущихся частей
Такие задачи принято решать связкой из брокера сообщений, отдельного кэша и кластера веб-сокетов. Мы обошлись без этого: обновления идут обычным потоком событий поверх HTTP, данные лежат в SQLite. Меньше узлов — меньше того, что ломается ночью и требует отдельного человека на дежурстве.
Это не экономия на надёжности, а другой её источник: систему из немногих частей проще держать в рабочем состоянии годами. Логику закрывают больше сотни автоматических тестов.