Для чего

Coriolis: The Third Horizon — научно-фантастическая ролевая игра от Free League в духе «Тысячи и одной ночи». Приложение заменяет бумажные листы и держит партию в общем состоянии: броски, очки Тьмы и чат видят все участники сессии. Фанатский проект, с издателем не связан.

Для игроков

  • Лист персонажа по правилам Coriolis: иконы, концепция, происхождение, характеристики от 1 до 5, общие и продвинутые навыки, таланты, снаряжение, состояния, нагрузка, критические травмы.
  • Броски. Пул D6 с перебросом: шестёрки дают успехи, единицы при перебросе приносят мастеру очки Тьмы.
  • Публичная ссылка на лист только для чтения, с отдельной настройкой для заметок мастера. Ссылку можно отозвать.
  • Экспорт в JSON листов, кораблей и истории.
  • Офлайн. Чтение работает везде. Правки веб сохраняет в очередь ServiceWorker, мобильное приложение — в кэш Hive, и обе очереди уходят на сервер при появлении сети.

Для мастера

  • Листы кораблей: 20 классов, модули, посты экипажа, корпус, энергия, сигнатура, броня, неисправности.
  • Игровые сессии: приглашение одной ссылкой, роли участников, архив и трекер очков Тьмы с историей.
  • NPC и энкаунтеры: готовые и свои NPC, конструктор энкаунтеров с инициативой, раундами и ходами.
  • Общий стол в реальном времени. Броски, очки Тьмы и чат расходятся по участникам через Centrifugo. В чате есть сообщения на всю сессию, личный шёпот, блокировка и системные сообщения.

Под капотом

Три клиента на одном бэкенде: Nuxt-SPA, приложение на Flutter для iOS и Android и бэкенд на NestJS с Postgres, Redis и Centrifugo. API описан в OpenAPI и AsyncAPI, клиенты для TypeScript и Dart генерируются из спецификации, CI падает при расхождении. Интерфейс переведён на английский, русский, украинский и греческий, паритет ключей проверяет CI. Телеметрия идёт через OpenTelemetry в Grafana, ошибки — в Sentry.

Общий каркас Course Shelf, Coriolis и burkmak разобран в посте «Контракт, от которого код не может уйти».

Установка

Локальный стек поднимается через Docker Compose. Публичного инстанса пока нет: до v1.0 остались production-хостинг и замеры холодного старта мобильного клиента.