К содержимому
Все работы

Mitu

Сценарий, таймер спикера и экраны зала, которые живут в одном времени.

mitu.run
Заказчик
Mitu
Год
2026
Отрасль
Ивенты
Формат
Веб-сервис
Главная страница mitu.run

О проекте

Задача и решение

Задача

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

Что мы сделали

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

Из одного кода собираются три продукта: облачный SaaS, коробка для корпоративного сервера заказчика и офлайн-версия, которая работает на одном ноутбуке прямо на площадке без интернета.

Состав работ

Что вошло в проект

  • Редактор сценария и пульт оператораПродукт
  • Экраны спикера, зала и командыИнтерфейсы
  • Синхронизация в реальном времениРазработка
  • Подписки, тарифы и админка платформыБиллинг
  • PDF-тайминг для площадкиРазработка
  • Кластер, бэкапы и выкладка без простояИнфраструктура

Как это устроено

Решения, на которых держится проект

Что каждое решение даёт бизнесу и как оно сделано технически.

  1. (01)

    Одно время на всех экранах

    Спикер, ведущий и зал видят одинаковый таймер. Секундный сбой сети не превращается в сорванный тайминг.

    Под капотом

    Отдельный WebSocket-сервис, состояние таймера в Redis с атомарными Lua-обновлениями и раздача событий между серверами через Pub/Sub. Клиент получает снимок и сам считает время по смещению серверных часов, поэтому каждая секунда не требует сетевого запроса.

  2. (02)

    Два оператора не мешают друг другу

    Команда ведёт эфир с нескольких ноутбуков и не боится случайно отменить действия коллеги.

    Под капотом

    Каждая команда несёт уникальный id и номер версии состояния. Повтор отбрасывается, устаревшая команда отклоняется вместе с актуальным снимком — оптимистичная блокировка вместо гонок.

  3. (03)

    Три продукта без трёх команд разработки

    Один сервис продаётся как облако, ставится на сервер крупного клиента или работает на площадке без интернета.

    Под капотом

    Матрица возможностей каждой редакции описана в одном файле и покрыта тестами. Офлайн-версия собирается в Docker Compose и не зависит ни от почты, ни от оплаты, ни от внешних сервисов.

  4. (04)

    Безопасность для корпоративных клиентов

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

    Под капотом

    Пароли на Argon2, вход по passkeys, сессии с отзывом, проверка прав на каждом действии. Экраны подключаются по короткоживущим подписанным пропускам, привилегированные операции пишутся в аудит в той же транзакции.

  5. (05)

    Обновления без остановки

    Новые функции выходят в любой день, даже во время чужих мероприятий, и не сбрасывают идущий эфир.

    Под капотом

    Kubernetes, PostgreSQL на CloudNativePG с PgBouncer, ежедневные бэкапы с проверкой восстановления. Конвейер «сборка → миграция → раскатка → проверка» и совместимость схемы на время выкладки.

Технологии

Стек проекта

Интерфейс
  • Next.js 16
  • React Server Components
  • Tailwind CSS 4
  • next-intl
Реальное время
  • Node.js
  • WebSocket
  • Redis Pub/Sub
  • Lua-скрипты
Данные
  • PostgreSQL 17
  • Drizzle ORM
  • CloudNativePG
  • PgBouncer
Безопасность
  • Argon2
  • WebAuthn / Passkeys
  • Подписанные пропуска
  • Cap.js
Инфраструктура
  • Kubernetes (k3s)
  • Traefik
  • Ansible
  • Infisical
  • GitHub Actions
Качество
  • TypeScript
  • Vitest
  • Интеграционные тесты на Postgres и Redis

Нужен похожий проект?

Написать нам
Следующий проектKrasnov ExpertЛичный сайт врача уролога-андрологаГлавная страница krasnov-expert.ru