Self-hosted · E2EE · /messenger
OurMessenger
Flutter (Android, Windows, Web) + ASP.NET Core. На сервере только шифротекст. Боевой URL в портфолио не попадает — только изолированная песочница.
Как попробовать
Демо-учётки в sandbox
Отдельная БД и API. Возьмите свободный аккаунт, откройте приложение, для realtime — второе окно в инкогнито с другим логином.
| Логин | Имя | Статус | Пароль | Действия |
|---|
- Откройте Flutter Web → /messenger/app/
- Войдите свободным demo_XX (пароль в таблице)
- Второе окно / инкогнито — другой demo_YY для realtime
Архитектура
Клиент ↔ API ↔ ciphertext
На сервере только шифротекст. SignalR принимает короткий тикет, не долгоживущий Bearer.
- E2EE: X25519 + ChaCha20-Poly1305 на клиенте
- SignalR hub: connection ticket, не long-lived Bearer в WSS URL
- Multi-device: Android / Windows / Web + device-link
- Encrypted file attachments (chunked upload)
- Portfolio sandbox: отдельный инстанс, не фильтр prod DB
- Web caveat: ключи в browser storage слабее OS keychain
Walkthrough
Короткое видео (~2 мин)
Fallback, если sandbox временно недоступен. Файл появится в assets/walkthrough.mp4.
Короткое видео (~2 мин) — скоро