147 lines
6.5 KiB
Markdown
147 lines
6.5 KiB
Markdown
# buhapp — мобильное приложение для поиска собуседника/компании для совместного досуга
|
||
|
||
## 1. Назначение
|
||
|
||
Мобильное приложение для поиска совершеннолетних пользователей, желающих познакомиться и провести время вместе (в компании, за баром, на прогулке, в путешествии и т.п.) с использованием GPS-геолокации.
|
||
|
||
## 2. Целевая аудитория
|
||
|
||
- Совершеннолетние (18+) пользователи
|
||
- Гео: Россия, СНГ (старт — РФ)
|
||
- Язык интерфейса: русский (старт)
|
||
|
||
## 3. Основные функции (MVP)
|
||
|
||
### 3.1. Регистрация и онбординг
|
||
- Регистрация по email/телефону (OTP)
|
||
- Заполнение анкеты: имя, возраст, пол, город
|
||
- Предпочтения: что пьёт, чем любит заниматься
|
||
- **Обязательное согласие** с:
|
||
- Пользовательским соглашением
|
||
- Политикой конфиденциальности
|
||
- Отказом от ответственности
|
||
- Подтверждением совершеннолетия (18+)
|
||
- Без согласия регистрация невозможна
|
||
|
||
### 3.2. Геолокация и поиск (главный экран)
|
||
- Запрос разрешения на использование геолокации
|
||
- Отображение пользователей на карте в радиусе N км
|
||
- Фильтры: возраст, пол, что пьёт, что делает
|
||
- **Скрытие точного местоположения** (±300 м)
|
||
- Точка исчезает через 1 час неактивности
|
||
- Возможность скрыть свою точку с карты
|
||
|
||
### 3.3. Профиль
|
||
- Фото (опционально)
|
||
- О себе (краткое bio)
|
||
- Язык общения
|
||
- Цели (пообщаться, выпить, погулять, поужинать и т.п.)
|
||
|
||
### 3.4. Чат
|
||
- Текстовые сообщения
|
||
- Отправка фото
|
||
- Удаление/редактирование сообщений
|
||
- Блокировка пользователя
|
||
- Жалоба на пользователя
|
||
|
||
### 3.5. Отзывы и рейтинги
|
||
- После первого сообщения / встречи
|
||
- Оценка 1–5 звёзд
|
||
- Текстовый отзыв
|
||
- Виден в профиле пользователя
|
||
|
||
### 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 — начальная версия
|