Документация / Технологический стек

Технологический стек

Из чего на самом деле собрана Lummia

Настольный клиент

C++20, Qt 6 и QML/Qt Quick — нативная оболочка и интерфейс для macOS, Windows и Linux. Qt Quick Controls 2 и Quick Dialogs отвечают за элементы управления и диалоги; Qt Network и WebSockets — за REST и события; Qt Multimedia — за камеру и медиа.

Qt WebEngine и WebChannel связывают встроенный WebRTC-интерфейс звонков с нативными сервисами. libsodium выполняет клиентское шифрование. Сборка — CMake, тесты — Qt Test и QML Test, упаковка — DMG, Windows installer и Linux AppImage. Это не Electron-приложение.

Сервер, API и данные

Elixir/OTP, Phoenix и Bandit обслуживают HTTP API. Phoenix Channels, PubSub и Presence доставляют события в реальном времени. Данные хранятся в PostgreSQL через Ecto/Postgrex, идентификаторы — UUID. JSON кодируется Jason. Guardian используется для JWT, Assent — для Google OAuth/OpenID Connect, bcrypt — для поддерживаемых парольных учётных данных API.

Вложения используют адаптеры объектного хранилища, включая Google Cloud Storage и S3-совместимый интерфейс; MinIO применяется при разработке. Обработка аватаров выполняется Image/libvips. enacl/libsodium шифрует исходящие сообщения ботов одноразовыми ключами для устройств-получателей.

Звонки, сайт и инфраструктура

Голос, видео и демонстрация используют WebRTC/LiveKit; сервер подписывает токены комнат через JOSE. В помощнике встреч используются локальная транскрибация Whisper и интеграция с Anthropic при настроенном ключе. AI-шлюз хранит ключ провайдера на сервере и учитывает лимиты и расходы отдельно для клиентов. Доступность конкретных моделей, диктовки и оплаты зависит от включённых оператором интеграций и тарифов.

Этот сайт — Phoenix LiveView, HEEx, Tailwind CSS и небольшой JavaScript без тяжёлого SPA-бандла. Inter размещён локально. Развёртывание — Docker, Docker Compose, GHCR и GitHub Actions. Серверные тесты — ExUnit, Ecto Sandbox и LiveViewTest.

Мобильный стек

React Native, Expo, TypeScript, React и Expo Router. react-native-libsodium переносит совместимую криптографию на устройства, Expo SecureStore хранит секреты, Phoenix JS Channels доставляет события, Lucide используется для иконок. Общий API не означает автоматическую готовность всех настольных функций на телефоне.

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

← Все статьи