Мессенджер: P2P, группы и продакшен
Курс: Мессенджер — личные диалоги, группы, продакшен
О курсе
Цель: превратить boilerplate-чат в мессенджер, которым можно пользоваться: личные переписки, группы, realtime-доставка без потерь после разрыва связи, уведомления — и задеплоенный на собственную VM продукт с релизным конвейером.
Подход: каждый модуль — законченный инкремент рабочей системы. Никаких «представьте, что у нас есть…»: вы правите живые миграции, дописываете API по контракту и видите результат в браузере на двух вкладках.
Главная инженерная тема — порядок и синхронизация: тотальный порядок
сообщений внутри диалога (seq), догон пропущенного после реконнекта
(catch-up), доставка at-least-once с дедупликацией. Это то, что отличает
мессенджер от «чата для вебинара».
Кому подходит
- Прошли Go Backend Development или имеете сравнимый опыт: горутины, HTTP, SQL, миграции.
- Пишете на React/TypeScript хотя бы на уровне компонентов и хуков.
- Хотите один крупный сквозной проект вместо десяти упражнений.
Стек
| Слой | Технологии |
|---|---|
| Бэкенд | Go 1.27, chi, pgx, JWT, gorilla/websocket |
| Данные | PostgreSQL 16 (миграции expand→contract), Redis (presence, rate limit) |
| Контракт | OpenAPI-first: спека — источник правды, тест «роуты ↔ спека» |
| Фронтенд | React 19, TypeScript, Vite, effector, FSD, react-router |
| Эксплуатация | Docker, реестр образов, release.sh, health-гейт, откат |
Маршрут курса
Бэкенд-ядро (модули 1–7): разворот boilerplate → модель диалогов →
порядок seq → P2P → группы → доставка и sync → присутствие.
Клиент (модули 8–10): список диалогов → окно переписки, группы и участники → уведомления.
Продакшен (модули 11–13): нагрузка и надёжность → выкат на VM → защита проекта.
Итоговый артефакт: работающий по HTTPS мессенджер на вашем домене с личными диалогами, группами, catch-up после разрыва, Web Push и отлаженным откатом релиза.
Как проходить
- Разверните boilerplate (модуль 1) и прогоните зелёные проверки.
- Не пропускайте 💻 Практику: модули собираются друг в друга, долг копится.
- Держите запущенными два браузерных профиля — почти каждая фича проверяется с двух сторон.
- 🧩 Quiz в конце модуля — самопроверка перед практикой следующего.