K2 STUDIO

Продукты под ключ

← Все кейсы

Scubalog

Whitelabel-платформа для дайвинг-сообществ и школ: курсы, ученики, инструкторы и чат в реальном времени. Каждый клуб работает под своим именем и своим логотипом.

Заказчик
Собственный продукт, scubalog.ru
Годы
2025 — по сей день
Объём работ
Продукт, интерфейс, сервер, интеграции, эксплуатация
Стек
Next.js и TypeScript, React, Prisma и SQLite, Server-Sent Events
Команда
Инга — продукт и проект, Геннадий — разработка

Задача

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

Нужна была одна система, в которой общение и учёт живут вместе, — и так, чтобы каждый клуб выступал под собственным брендом, а не под чужим.

Что сделали

  • Whitelabel: клуб как отдельная организация со своим логотипом, составом и ролями.
  • Учебная часть: курсы, зачисления, задания, заметки инструктора по каждому ученику.
  • Чат четырёх видов: общий по клубу, инструкторский, по курсу и личные сообщения.
  • В чате — реакции, опросы, вложения, ответы на сообщения, правка и удаление, отметки о прочтении.
  • Пуш-уведомления и установка как приложение: платформа работает с телефона, где дайверы и находятся.
  • Вход по одноразовому коду на почту, без паролей.

Результат

Десятки тысяч сообщений в сутки

В реальном времени, для тысяч пользователей.

Почему так мало движущихся частей

Такие задачи принято решать связкой из брокера сообщений, отдельного кэша и кластера веб-сокетов. Мы обошлись без этого: обновления идут обычным потоком событий поверх HTTP, данные лежат в SQLite. Меньше узлов — меньше того, что ломается ночью и требует отдельного человека на дежурстве.

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

Обсудить похожую задачу