Documentation / Technology stack

Technology stack

What Lummia is actually built with

Desktop client

C++20, Qt 6 and QML/Qt Quick provide the native shell and interface on macOS, Windows and Linux. Qt Quick Controls 2 and Quick Dialogs provide controls and dialogs; Qt Network and WebSockets handle REST and events; Qt Multimedia handles camera and media.

Qt WebEngine and WebChannel bridge the embedded WebRTC call interface with native services. libsodium handles client-side encryption. Builds use CMake; tests use Qt Test and QML Test; packages are DMG, Windows installer and Linux AppImage. The desktop app does not use Electron.

Server, API and data

Elixir/OTP, Phoenix and Bandit serve the HTTP API. Phoenix Channels, PubSub and Presence deliver real-time events. PostgreSQL stores data through Ecto/Postgrex, using UUID identifiers. Jason encodes JSON. Guardian handles JWTs, Assent handles Google OAuth/OpenID Connect, and bcrypt protects supported API password credentials.

Attachments use object-storage adapters, including Google Cloud Storage and an S3-compatible interface; development uses MinIO. Image/libvips processes avatars. enacl/libsodium encrypts outgoing bot messages with one-off keys for recipient devices.

Calls, website and infrastructure

Voice, video and sharing use WebRTC/LiveKit; the server signs room tokens with JOSE. The meeting assistant uses local Whisper transcription and Anthropic integration when a key is configured. The AI gateway keeps provider credentials on the server and tracks customer limits and usage separately. Model, dictation and payment availability depends on the integrations and pricing enabled by the operator.

This site uses Phoenix LiveView, HEEx, Tailwind CSS and small JavaScript without a large SPA bundle. Inter is self-hosted. Deployment uses Docker, Docker Compose, GHCR and GitHub Actions. Server tests use ExUnit, Ecto Sandbox and LiveViewTest.

Mobile stack

React Native, Expo, TypeScript, React and Expo Router. react-native-libsodium provides compatible device cryptography, Expo SecureStore stores secrets, Phoenix JS Channels delivers events, and Lucide supplies icons. A shared API does not automatically make every desktop feature available on mobile.

Describes the current implementation. Mobile availability and limitations are documented separately.

← All guides