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

147 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 — начальная версия