diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..53247c4 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,126 @@ +# WSMessenger Architecture + +## Цель + +WSMessenger — self-hosted Android/Web мессенджер на базе Matrix. + +Проект должен: +- безопасно работать рядом с FastPanel; +- не ломать ArtistFlow; +- не вмешиваться в widget.stackworks.ru; +- масштабироваться; +- поддерживать Android/Web клиентов. + +## Основные компоненты + +### 1. Matrix Synapse + +Назначение: +- транспорт сообщений; +- комнаты; +- события; +- federation (в будущем); +- media storage. + +Работает: +- локально; +- только через reverse proxy. + +Порт: +- 127.0.0.1:8008 + +### 2. PostgreSQL + +Отдельная база данных для Matrix/SWMessenger. + +Изоляция обязательна. + +Запрещено использовать базы ArtistFlow. + +### 3. Web Client + +План: +- отдельный web-клиент; +- возможно Element Web на старте; +- позже собственный UI. + +Домен: +- chat.stackworks.ru +- или messenger.stackworks.ru + +### 4. Android Client + +Основа: +- Matrix SDK; +- форк Element или собственный клиент позже. + +План: +- собственный branding; +- push; +- комнаты; +- медиа; +- голосовые функции позже. + +### 5. Admin Panel + +Назначение: +- управление пользователями; +- мониторинг; +- healthcheck; +- настройки. + +Домен: +- admin-messenger.stackworks.ru + +### 6. TURN/STUN + +coturn. + +Понадобится позже для звонков. + +## Изоляция от production + +WSMessenger должен быть полностью изолирован от: +- ArtistFlow; +- widget.stackworks.ru; +- production-сайтов FastPanel. + +## FastPanel + +FastPanel используется только как: +- reverse proxy; +- SSL management; +- DNS/vhost gateway. + +WSMessenger не должен: +- менять FastPanel автоматически; +- менять nginx configs самостоятельно; +- перезапускать production nginx. + +## Директории + +```text +/opt/swmessenger/source +/opt/swmessenger/app +/opt/swmessenger/matrix +/opt/swmessenger/backups +``` + +## Docker + +Используем Docker Compose. + +Преимущества: +- изоляция; +- простое обновление; +- rollback; +- переносимость. + +## MVP v0.x + +Первая цель: +- поднять Synapse; +- подключить PostgreSQL; +- открыть web-client; +- проверить регистрацию; +- не сломать production.