Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vortex

MVP мессенджера с прямыми/групповыми чатами и каналами (текст/войс/анонсы), доставкой сообщений в реальном времени и медиавложениями.

Архитектура и разработка (включая AI-ассистированное кодирование) — @yngnoise. Локальный MVP: собран и протестирован в браузере и Windows-сборке, мобильная сборка не тестировалась.

Стек

Backend: Go, PostgreSQL, Redis, Centrifugo (real-time доставка через WebSocket), MinIO (S3-совместимое хранилище медиа) Frontend: Flutter

Архитектура

┌─────────────┐        REST API         ┌───────────────┐
│ Flutter App │ ──────────────────────► │   Go Server   │
│             │                         │               │
│             │      WebSocket          └───┬───┬───┬───┘
│             │ ◄──────────────────┐        │   │   │
└─────────────┘                    │        │   │   │
                            ┌──────┴────┐   │   │   │
                            │Centrifugo │   │   │   │
                            └───────────┘   │   │   │
                                    ┌───────┘   │   └───────────┐
                              ┌─────┴────┐  ┌───┴────────┐ ┌────┴────┐
                              │PostgreSQL│  │   Redis    │ │  MinIO  │
                              └──────────┘  └────────────┘ └─────────┘

Go-сервер обслуживает REST API (аутентификация, чаты, каналы, вложения) и публикует события в Centrifugo, к которому клиент подключён напрямую по WebSocket для мгновенной доставки сообщений, индикаторов набора текста, статусов прочтения и presence (кто сейчас в сети).

Модули

  • auth — регистрация/логин, JWT (access + refresh токены), сессии
  • messaging — прямые и групповые чаты: сообщения, вложения, редактирование/удаление, read receipts, typing indicators
  • channels — каналы с комнатами (text/voice/announcement), управление участниками
  • media — загрузка файлов/изображений в MinIO с серверной валидацией размера и типа (не доверяет метаданным клиента)
  • realtime — presence (онлайн-статус, last-seen), интеграция с Centrifugo

Локальный запуск

Требуется Docker, Go 1.22+, Flutter SDK.

# 1. Инфраструктура (PostgreSQL, Redis, Centrifugo, MinIO)
cp server/.env.example server/.env   # заполнить своими значениями
docker compose up -d

# 2. Миграции применяются автоматически при старте сервера

# 3. Backend
cd server
go run cmd/api/main.go

# 4. Frontend
cd app
flutter pub get
flutter run -d chrome   # или -d windows

Порты по умолчанию: API — уточнить в server/pkg/config, PostgreSQL — 5433, Redis — 6379, Centrifugo — 8001, MinIO — 9000.

Статус проекта

Локальный MVP, не задеплоен. Список известных ограничений и пунктов, обязательных перед публичным репозиторием / деплоем / многопользовательским режимом — в SECURITY.md.

About

MVP мессенджера: прямые/групповые чаты и каналы с real-time доставкой сообщений. Go + Flutter + Centrifugo + PostgreSQL + Redis + MinIO

Topics

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages