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