Chat — подробный кейс
Простая и надёжная платформа обмена сообщениями: безопасная аутентификация, поддержка множественных сессий, история диалогов, realtime‑обновления через WebSocket.
О проекте
Простой мессенджер с поддержкой мультисессий, моментальной доставкой сообщений, историей диалогов и возможностью отправки вложений.
Демонстрируемые компетенции
- Проектирование аутентификации
- Realtime‑логика доставки событий
- Воспроизводимая инфраструктура через Docker Compose
Интерфейс приложения
Скриншоты основных экранов и сценариев использования
Архитектура
Backend — монолит на базе NestJS, логически разделённый на модули (аутентификация, пользователи, диалоги и сообщения, хранение контента, уведомления). Такой подход упрощает поддержку и развитие функционала.
Данные распределены по ролям: реляционная база PostgreSQL хранит долговременные сущности (профили, диалоги, сообщения), а Redis используется как быстрый кеш и хранилище сессий для снижения задержек.
Frontend — одностраничное приложение на Angular, собранное в статические файлы; клиент использует HTTP для операций и realtime‑соединения для мгновенных обновлений.
Веб‑сервер (nginx) отдаёт статические ресурсы, маршрутизирует HTTP и WebSocket‑трафик к приложению и выполняет TLS‑терминацию на краю.
Структура репозитория
В корне находятся `Dockerfile`, `docker-compose.yml`, `nginx.conf` и скрипт сборки `build.sh`; реализации backend и frontend — в папке `deps`.