На главную
Для разработчиков

Что под капотом

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

Архитектура

Один бэкенд, три клиента, общий контракт API/WebSocket.

Десктоп

Нативная оболочка на Tauri 2 (Rust) с системным WebView. Внутри — тот же фронтенд, что и в вебе. Сборка ~4.5 МБ против ~200 МБ у Electron, ниже потребление памяти и поверхность атаки.

Веб

SPA на Preact + @preact/signals, сборка через Vite 6, язык TypeScript. Тот же код переиспользуется внутри Tauri.

Мобайл

Отдельное мобильное приложение (Android), работающее против того же бэкенда и контракта. iOS/macOS в разработке.

Бэкенд

REST /api/* и реалтайм /ws. За nginx; /api и /ws проксируются на внутренний сервис, медиа отдаётся из /uploads.

Шифрование

Сквозное шифрование переписки и медиа на стороне клиента (Web Crypto API).

Тексты сообщений
AES-256-GCM. Формат на проводе — enc1:b64(iv):b64(ct+tag). Ключ диалога запрашивается через GET /api/dialogs/{id}/key и не покидает устройство в открытом виде.
Медиа и файлы
Контентно-адресуемое хранилище (CAS): файл режется на чанки по 4 МБ и шифруется отдельным ключом файла. mediaKey — это enc1-обёртка над FEK(32 байта) ‖ IV(12 байт).
Голосовые
Загрузка через /api/upload/voice с шифрованием на сервере хранения, привязка к диалогу.

Транспорт и реалтайм

Доставка сообщений, статусы и звонки.

WebSocket

Реалтайм-канал /ws: доставка сообщений, статусы прочтения, индикаторы набора/онлайна, авто-переподключение и офлайн-очередь pending-сообщений.

WebRTC-звонки

Аудио/видео P2P с DTLS-SRTP. Сигналинг идёт по WebSocket (call_offer/answer/ice), при недоступности прямого соединения — ретрансляция через TURN.

Боты

Инлайн-клавиатуры (reply_markup.inline_keyboard) рендерятся под сообщениями; нажатие шлёт POST /api/messages/{id}/callback, ответ приходит событием callback_answer.

Офлайн-кэш

История диалогов кэшируется в IndexedDB: мгновенный старт, чтение без сети, синхронизация при подключении.

Стек одним списком

Коротко и по делу.

Оболочка десктопаTauri 2 · Rust · системный WebView
ФронтендTypeScript · Preact · @preact/signals
СборкаVite 6
ШифрованиеAES-256-GCM · Web Crypto API
ТранспортREST /api · WebSocket /ws
ЗвонкиWebRTC · DTLS-SRTP · TURN
Хранилище клиентаIndexedDB
МедиаCAS · чанки 4 МБ · per-file FEK
Размер десктопа~4.5 МБ
ПлатформыAndroid · Linux · Windows · Web
Хотите интегрироваться? Бот-API доступен на dev.cytara.space, основной API — api.cytara.space.