6.5 KiB
6.5 KiB
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 APIgit.buhapp.mygoodservice.ru— Gitfiles.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. Этапы разработки
- Sprint 0 — Юр. документы, ТЗ (этот документ)
- Sprint 1 — Каркас backend (auth + register + согласия)
- Sprint 2 — Профиль и анкета
- Sprint 3 — Геолокация и поиск на карте
- Sprint 4 — Чат (WebSocket)
- Sprint 5 — Отзывы
- Sprint 6 — Mobile (RN) с картой как главный экран
- Sprint 7 — Безопасность (SOS, жалобы)
- Sprint 8 — Подписка / монетизация
- Sprint 9 — Тест, деплой в прод
8. Версия документа
- v0.1 — 2026-08-20 — начальная версия