← Все проекты 01 · GCHAT
GChat — приватный E2E-мессенджер
Founding engineer на собственном продукте. Собран соло: протокол, сервер, клиент, лендинг, инфра.
gchat.onlineGChat — это полноценный приватный мессенджер с end-to-end шифрованием, который я спроектировал и построил в одни руки: от математики криптопротокола до деплоя на self-managed Linux-железе.
Контекст
Задача: приватный мессенджер уровня Signal, но без привязки к номеру телефона, с zero-trust архитектурой и готовностью к работе в недоверенных юрисдикциях. Решил делать соло, чтобы контролировать каждый слой.
Криптография
- X3DH handshake на Curve25519 / Ed25519 для установки сессии.
- Double Ratchet генерирует уникальный симметричный ключ на каждое сообщение.
- AES-GCM-256 для транспортного слоя, Argon2id для локального key-wrap, TLS 1.3 для relay.
- Сервер видит только opaque ciphertext и не может расшифровать сообщения даже по юридическому запросу.
- Аккаунты без номеров телефона — регистрация через криптографическую recovery-фразу.
Backend
- FastAPI + SQLAlchemy 2.0 async + asyncpg поверх PostgreSQL.
- Redis для pub/sub и сессий, arq для фоновых задач (TTL-сборка медиа, push fan-out).
- Stateless WebSocket транспорт, горизонтально масштабируется за sticky-session роутером.
- structlog + Prometheus для наблюдаемости.
Mobile
- Flutter + Dart, Riverpod для состояния, go_router для навигации.
- Isar как зашифрованный локальный store.
- Нативные platform channels для APNs / PushKit, FCM, CallKit, ConnectionService.
- Android FLAG_SECURE + iOS screenshot detection с уведомлением собеседника.
- flutter_webrtc для 1:1 voice/video, local_auth для биометрии.
Frontend / лендинг
- Astro 5 + Tailwind 4, статическая генерация.
- Двуязычный EN / RU, parity enforced через TypeScript discriminated unions.
- Кастомный WebGL-шейдер на фоне с DPR-aware rendering и prefers-reduced-motion.
- SVG-диаграммы криптографических флоу с SMIL-анимацией.
- Автоматическая генерация OG-изображений через sharp.
- Меньше 72 KB gzip на страницу.
DevOps
- Multi-stage Docker, Coolify-driven CI/CD на собственном Linux-сервере.
- Per-app GitHub watch-path фильтрация — пуш в landing не триггерит пересборку backend.
- Traefik + Nginx с автоматическим Let's Encrypt.
- Жёсткие CSP / HSTS / X-Frame-Options / Permissions-Policy.
- Staged preview-деплои с noindex gating.
- RFC 9116 security.txt и процесс coordinated disclosure.