Технологический стек Disban
Disban создаётся на современном стеке, ориентированном на производительность, надёжность и дальнейшее масштабирование. Ниже — технологии, которые реально используются в проекте.
Web-интерфейс
Веб-интерфейс Disban построен на React и TypeScript. Компонентная архитектура помогает постепенно развивать интерфейс, а типизация снижает количество ошибок при изменении приложения.
- React 18;
- TypeScript;
- Vite;
- Zustand для состояния клиента;
- Tailwind CSS;
- lucide-react для иконок.
Десктопный клиент
Десктопный клиент создаётся на Tauri 2 и Rust. Tauri использует системный WebView и позволяет объединять веб-интерфейс с нативными возможностями операционной системы.
Такой подход создаёт основу для компактного и производительного десктопного клиента. Мы считаем Rust и Tauri перспективной основой развития, но не сравниваем Disban с другими продуктами без независимых замеров.
Серверная часть
Текущий production API работает на Python (FastAPI) и uvicorn: REST для авторизации и данных, отдельный WebSocket-шлюз для обновлений в реальном времени.
В репозитории есть заготовки Rust-сервисов, но они не являются действующим production backend.
База данных
PostgreSQL хранит пользователей, сессии, серверы, каналы, сообщения, роли и связанные данные. Доступ к БД из API выполняется через psycopg.
Голос
- WebRTC для передачи аудио;
- Opus в браузерном SDP;
- TURN/coturn для прохождения NAT;
- сигнализация через WebSocket.
Инфраструктура
- Nginx как reverse proxy;
- TLS/HTTPS для сайта, API и WebSocket.
Авторизация
Поддерживаются вход по логину и паролю, Google, Mail.ru, Telegram, а также одноразовые коды через Telegram-бота. Сессии хранятся на сервере (токен сессии), а не как пользовательские JWT-сессии приложения.