Проект

Масштаби­руемая VR-платформа для интерактивных туров

Туры на автономных гарнитурах, каталог контента и подписки — под управлением одной админ-панели

  • Unity
  • OpenXR
  • .NET 9
  • PostgreSQL

Сервис вырос, а управлять им было нечем

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

Контент раскладывали руками

Версии путались, файлы терялись, а на гарнитуре у клиента вполне могла оказаться устаревшая сборка.

Подписки жили в разных местах

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

У гарнитуры не было единого API

Каждая новая функция превращалась в обходное решение поверх предыдущего.

Администрирования как такого не было

Ни ролей, ни журнала действий, ни внятного контура безопасности.

Развёртывание зависело от окружения

Без контейнеров установка на новый сервер каждый раз шла своим путём.

Собрали одну систему управления вместо россыпи ручных операций

Модерация контента, контроль лицензий и доставка обновлений на гарнитуры сошлись в один контур.

Обновления с версионированием

Гарнитура получает ровно ту версию, которая положена ей по подписке: контроль версий, проверка актуальности и защищённые ссылки на скачивание.

Биллинг подписок без ручного труда

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

Модульный бэкенд на ASP.NET

Авторизация, подписки, контент и API для гарнитуры разведены по слоям: правка в одном не задевает остальные.

Одинаковые окружения в Docker

API, PostgreSQL и хранилище поднимаются одной командой, а dev, test и prod больше не расходятся между собой.

REST API для гарнитуры

JWT-авторизация, проверка подписки, выдача обновлений, метаданных и файлов. Отдельно вылизано под слабый канал: на плохом интернете сценарий не рассыпается.

Админ-панель для операторов

Пользователи, активность, подписки и контент — в одном месте, с разделением прав администратора и менеджера.

Первый рынок — недвижимость

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

Шире география

Удалённый показ даёт эффект присутствия, а география сделок перестаёт зависеть от расстояния.

Ниже издержки на показ

Меньше личных встреч, повторных показов и выездных съёмок.

Сильнее вовлечение

Просмотр превращается в эмоциональный опыт, и это видно по конверсии в сделку.

Результат

Управление сервисом собрано в одну панель, а гарнитура общается с бэкендом через единый REST API.

Операционка упростилась

Контент, подписки и доступы меняются централизованно и сразу, а версионирование гарантирует, что на гарнитуре актуальные материалы.

Архитектура держит рост

.NET 9 в Docker даёт предсказуемое развёртывание и запас на масштабирование, а PostgreSQL хранит пользователей, подписки, версии контента и журнал аудита.

Прозрачность и устойчивость

Ролевая модель и логирование показывают, кто и что сделал. Под нагрузкой система не падает и корректно отдаёт ошибки.

База для развития платформы

Доступами управлять проще, контент выходит быстрее, ручных операций меньше, а за пользователями и обновлениями есть нормальный мониторинг.

Стек технологий

.NET 9.0 / C#
Бэкенд целиком: REST API, логика подписок, контента и авторизации
ASP.NET Core
API и server-side компоненты под высокую нагрузку
Razor UI
Админка: экраны пользователей, подписок и контента
REST API
Канал гарнитуры: вход, проверка подписки, обновления, загрузка контента
JWT (JSON Web Tokens)
Авторизация гарнитуры и админ-панели
PostgreSQL
Пользователи, подписки, версии контента, журнал аудита
Docker
Единые образы API, админки и базы для dev, test и prod
Serilog / .NET Logging
Журналы системы, диагностика API и админки
Unity, OpenXR, Pico SDK
VR-клиент на автономных гарнитурах: динамическая подгрузка внешних ассетов

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

Делаем VR-приложения и бэкенд к ним: гарнитуры, каталог контента, подписки и доставка обновлений.