Skip to content

kennyzavr/chat-backend

Repository files navigation

Приложение

Данное приложение - минималистичная платформа для обмена сообщениями в реальном времени.

Возможности платформы

  • Доставка сообщений в реальном времени через WebSocket (Socket.IO).
  • Безопасная аутентификация: краткоживущие JWT access‑токены и refresh‑токены, привязанные к сессиям и хранимые в быстрых хранилищах.
  • Хранение истории и метаданных в реляционной базе с поддержкой транзакций и пагинации.
  • Управление множественными сессиями пользователя с возможностью выборочной инвалидации и отслеживания онлайн‑статуса.

Архитектура и модули

Backend

репозиторий: https://github.com/kennyzavr/chat-backend

  • Интерфейсы:

    • REST API для синхронных операций (регистрация, авторизация, получение истории, CRUD для сущностей).
    • WebSocket gateway для подписки на события (новое сообщение, уведомления, состояние пользователя).
  • Основные модули:

    • Аутентификация: логин, подтверждение почты.
    • Сессии и токены: генерация и валидация access/refresh токенов, хранение сессий в быстром хранилище.
    • Пользователи: управление профилями, сопоставление сессий и socket‑подключений, статус онлайн/оффлайн.
    • Сообщения и диалоги: доставка сообщений, история и пагинация.
  • Хранение данных:

    • Долговременные данные — реляционная БД (Postgres).
    • Эфемерные / быстрые данные (сессии, refresh‑токены, rate limits) — Redis.

Frontend

репозиторий: https://github.com/kennyzavr/chat-frontend

  • Организация приложения:

    • SPA‑клиент, разделённый на модули: авторизация, основной рабочий интерфейс, список диалогов, компоненты уведомлений.
    • Централизованное управление состоянием для синхронизации данных между компонентами (стор/сервисный слой).
  • Сетевой слой:

    • HTTP‑сервисы для работы с REST API (получение истории, отправка сообщений, операции пользователя).
    • WS‑сервис для управления Socket.IO‑подключением, подписками и обработкой событий (включая логику повторного подключения и реавторизации).
  • Поведение клиента:

    • При логине клиент сохраняет токены и инициирует WS‑соединение.
    • Realtime‑события обновляют стор и UI, синхронизируя данные между вкладками/компонентами.
    • При истечении access‑токена используется refresh‑flow для обновления и поддержания соединения.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages