Разработать API и структуру БД для обеспечения работы мобильного приложения с указанным функционалом.
Функционал приложения:
-
Регистрация/авторизация по email/password
-
Редактирование профиля
- Имя
- Аватар
- Возраст
- Интересы
-
Редактирование настроек отображения списка Показывать мне профили возрастной группы – Все – 18 - 24 – 25 - 40 – Старше 40 Не показывать мой профиль возрастной группе – Все – 18 - 24 – 25 - 40 – Старше 40 Показывать профили с указанными интересами Не показывать профили с указанными интересами
Исходное:
Показывать профили с интересами – Интерес 1: да/нет/не важно – Интерес 2: да/нет/не важно – Интерес 3: да/нет/не важно Не показывать профили с интересами – Интерес 1: да/нет/не важно – Интерес 2: да/нет/не важно – Интерес 3: да/нет/не важно
Было изменено чтобы избежать коллизий (что делать, если стоить "да" в показывать Интерес 1 и "нет" в не показывать "Интерес 1"). При этом настройка "Показывать профили" то же не несет особой смысловой нагрузки (при наличии параметра "не важно"). Скрываются профили, у которых есть интересы входящие в параметр "Не показывать профили с указанными интересами"
Показывать мне профили пользователей находящихся
- “Мир”
- “Страна”
- “Рядом”
“Мир”: Список всех пользователей в порядке времени последней авторизации
“Страна”: объединяет 2 списка (без дубликатов) в следующем порядке: Список пользователей той же страны в порядке времени последней авторизации Список других пользователей в порядке времени последней авторизации (пользователи, которые не попали в предыдущую категорию, и пользователи без известного местоположения) (список "Мир")
“Рядом”: объединяет 3 списка (без дубликатов) в следующем порядке: Список пользователей в радиусе 50 км от пользователя в порядке времени последней авторизации Список пользователей той же страны в порядке времени последней авторизации (список "Страна") Список других пользователей в порядке времени последней авторизации (пользователи, которые не попали в 3 предыдущих категории и пользователей без известного местоположения) (список "Мир")
- Отображение списка профилей (на основе настроек отображения) с
бесконечным скроллом. Должны загружаться блоки по N профилей без
дубликатов (уже показанные профили не должны попадать в блок,
отдаваемый API). Реализовано через предоставление
limit
/offset
Для хранения информации используется БД PostgreSQL
Для создания базы данных запустить файл database/db_create.sql