buhapp-docs/TZ.md
2026-08-20 15:36:47 +00:00

6.5 KiB
Raw Permalink Blame History

buhapp — мобильное приложение для поиска собуседника/компании для совместного досуга

1. Назначение

Мобильное приложение для поиска совершеннолетних пользователей, желающих познакомиться и провести время вместе (в компании, за баром, на прогулке, в путешествии и т.п.) с использованием GPS-геолокации.

2. Целевая аудитория

  • Совершеннолетние (18+) пользователи
  • Гео: Россия, СНГ (старт — РФ)
  • Язык интерфейса: русский (старт)

3. Основные функции (MVP)

3.1. Регистрация и онбординг

  • Регистрация по email/телефону (OTP)
  • Заполнение анкеты: имя, возраст, пол, город
  • Предпочтения: что пьёт, чем любит заниматься
  • Обязательное согласие с:
    • Пользовательским соглашением
    • Политикой конфиденциальности
    • Отказом от ответственности
    • Подтверждением совершеннолетия (18+)
  • Без согласия регистрация невозможна

3.2. Геолокация и поиск (главный экран)

  • Запрос разрешения на использование геолокации
  • Отображение пользователей на карте в радиусе N км
  • Фильтры: возраст, пол, что пьёт, что делает
  • Скрытие точного местоположения (±300 м)
  • Точка исчезает через 1 час неактивности
  • Возможность скрыть свою точку с карты

3.3. Профиль

  • Фото (опционально)
  • О себе (краткое bio)
  • Язык общения
  • Цели (пообщаться, выпить, погулять, поужинать и т.п.)

3.4. Чат

  • Текстовые сообщения
  • Отправка фото
  • Удаление/редактирование сообщений
  • Блокировка пользователя
  • Жалоба на пользователя

3.5. Отзывы и рейтинги

  • После первого сообщения / встречи
  • Оценка 15 звёзд
  • Текстовый отзыв
  • Виден в профиле пользователя

3.6. Верификация (опционально, MVP — без обязательности)

  • Привязка соцсетей (VK, Telegram, OK)
  • В будущем: паспорт + selfie (ручная модерация)

3.7. Безопасность

  • Кнопка SOS (отправляет контакту/модератору)
  • Журнал действий (audit_log)
  • Блокировка пользователей
  • Жалобы → модерация

4. Технический стек

Backend

  • Go 1.22+, фреймворк Fiber
  • PostgreSQL 16 — основная БД
  • Redis 7 — кэш, сессии, rate limiting
  • MinIO — хранение фото
  • WebSocket — чат в реальном времени
  • JWT — авторизация
  • golang-migrate — миграции БД

Frontend (Mobile)

  • React Native (iOS + Android)
  • react-native-maps — карты (Apple/Google)
  • TypeScript
  • React Navigation
  • Zustand — state
  • React Query — данные

Инфраструктура

  • Docker Compose на сервере 77.106.71.9
  • Nginx — reverse proxy + SSL (Let's Encrypt)
  • Gitea — локальный Git (https://git.buhapp.mygoodservice.ru)
  • Домены:
    • buhapp.mygoodservice.ru — основное приложение
    • api.buhapp.mygoodservice.ru — backend API
    • git.buhapp.mygoodservice.ru — Git
    • files.buhapp.mygoodservice.ru — MinIO/S3

5. Структура БД (предварительная)

users (id uuid pk, email, phone, name, birthdate, gender, city, bio, photo_url, ...)
user_preferences (user_id fk, drinks text[], activities text[], ...)
user_locations (user_id pk, lat, lng, visible, updated_at)
consent_log (id, user_id, doc_type, doc_version, ip, user_agent, accepted_at)
audit_log (id, user_id, action, target_type, target_id, metadata, ip, created_at)
chats, messages, reviews, blocks, reports...

6. API эндпоинты (основные)

POST   /api/v1/auth/register      -- регистрация + согласия
POST   /api/v1/auth/login         -- вход (OTP)
POST   /api/v1/auth/refresh       -- обновить JWT

GET    /api/v1/me                 -- свой профиль
PUT    /api/v1/me                 -- обновить профиль
PUT    /api/v1/me/location        -- обновить GPS
PUT    /api/v1/me/visibility      -- скрыть/показать на карте

GET    /api/v1/search/nearby      -- поиск рядом
GET    /api/v1/users/:id          -- посмотреть профиль
POST   /api/v1/users/:id/block    -- заблокировать
POST   /api/v1/users/:id/report   -- пожаловаться

GET    /api/v1/chats              -- список чатов
POST   /api/v1/chats              -- создать чат
GET    /api/v1/chats/:id/messages -- сообщения
POST   /api/v1/chats/:id/messages -- отправить

POST   /api/v1/reviews            -- оставить отзыв
GET    /api/v1/users/:id/reviews  -- отзывы о пользователе

POST   /api/v1/sos                -- кнопка SOS

7. Этапы разработки

  1. Sprint 0 — Юр. документы, ТЗ (этот документ)
  2. Sprint 1 — Каркас backend (auth + register + согласия)
  3. Sprint 2 — Профиль и анкета
  4. Sprint 3 — Геолокация и поиск на карте
  5. Sprint 4 — Чат (WebSocket)
  6. Sprint 5 — Отзывы
  7. Sprint 6 — Mobile (RN) с картой как главный экран
  8. Sprint 7 — Безопасность (SOS, жалобы)
  9. Sprint 8 — Подписка / монетизация
  10. Sprint 9 — Тест, деплой в прод

8. Версия документа

  • v0.1 — 2026-08-20 — начальная версия