● Техническая демонстрация · не продакшен-MVP

SportVibe backend — рабочая архитектура, не макет

Go-монолит на настоящей PostgreSQL/PostGIS, Redis и фоновом воркере, реализующий ключевые сценарии приложения знакомств и спортивных событий SportVibe: авторизация, лента и матчинг, события с заявками, уведомления через outbox-воркер и demo-панель администратора.

Живой статус стенда

Опрос реальных health-эндпоинтов API каждые несколько секунд — не статичные иконки.

API
проверка…
PostgreSQL
проверка…
Redis
проверка…
Worker
см. /metrics

Что реально реализовано

Вертикаль ключевых сценариев из функционального ТЗ — не полный коммерческий MVP (см. явные исключения ниже).

📲

Авторизация

Phone + OTP (demo-провайдер), JWT access/refresh с ротацией и reuse-detection, rate-limit через Redis.

👤

Профиль и анкета

Регистрация с динамическими полями по виду спорта (JSONB), просмотр/редактирование, фильтры анкет.

💜

Лента и матчинг

Рекомендации по PostGIS-геофильтру, лайк/дизлайк, транзакционное создание match на взаимный лайк.

📅

События

Создание, заявки на участие, подтверждение организатором, лимит участников, геокод-заглушка.

🔔

Уведомления

Outbox-паттерн: фоновый воркер асинхронно доставляет уведомления с учётом настроек пользователя.

🛡️

Admin-обзор

Отдельный demo-контур: пользователи, события, жалобы — новый API, не реконструкция чужого.

Архитектура

Модульный монолит: два бинаря (api, worker) из одного Go-модуля, общие internal-пакеты, один источник правды.

Mobile client (вне репозитория) web/app demo-клиент nginx reverse proxy + TLS cmd/api chi router, stateless cmd/worker outbox → notifications PostgreSQL + PostGIS Redis cache / rate-limit Prometheus /metrics

Контракт API

Пути сохранены 1:1 из реального Postman-контракта клиента (ADR-1) — совместимость с уже собранным мобильным приложением, не «причёсанный» REST.

ГруппаПримеры путейСтатус
Auth/api/v1/auth/otp_enter, otp_verify, registerреализовано
Profile/api/v1/myprofile/, edit, notifications/реализовано
Datings/api/v1/datings/recommendations/, like, likes/реализовано
Events/api/v1/events/create_event, events_manage, all/реализовано
Admin (demo)/api/v1/admin/users, events, complaintsновый demo-контур

Честно про пробелы и границы демо

Все данные в системе — синтетические, созданы для демонстрации. Это техническая вертикаль ключевых сценариев, не полный коммерческий MVP: чат (1:1 и групповой) — по ТЗ отнесён к следующему релизу; VK/«ПроСпорт»-авторизация, реальные FCM/APNs push и промышленный внешний геокодер не подключены (реализованы через явные интерфейсы с demo-заглушками); лента-сетка, paywall на список лайкнувших и рейтинг профиля — вне MVP-объёма по исходному ТЗ. Figma была изучена частично (доступ к канвасу ограничен инструментами сессии) — визуальный стиль приближённый, не пиксель-в-пиксель.