Проект команды Dungeon masters специально для MOSCOW CITY HACK 2021 (https://moscityhack.innoagency.ru/)
Трек 4 - Планирование досуговых мероприятий в приложении «Моя Москва»
@ha47ze - Ванурин Алексей (Генеральный директор продуктовой аналитики и младший back-end разработчик команды "Dungeon masters")
@Kelbinary - Максим Савченко (Teamlead iOS команды и СТЕ комады "Dungeon masters")
@lynnica - Александра Ставская (Арт-директор и идейный вдохновитель комады "Dungeon masters")
Miro - https://miro.com/app/board/o9J_lCTwMTg=/?moveToWidget=3074457360345071732&cot=10
Рекоммендательная система подберет мероприятия под твой вкус
Ищи только то, что нужно
Выбирай мероприятия для совместного похода с другом, девушкой или мамой
Бекенд реализован на микросвервисном подходе. Сервис реализован как отдельный набор из двух приложений, которые поддерживаются и деплоятся независимо друг от друга и обзаются с клиентом и основной апи mos.ru только посредством http
Для работы сервиса достаточно запусть его на отдельных серверах
Мобильный клиент сервиса
Технологический стек: Swift, Xcode, Viper + DataSource, Storyboard. Используемые библиотеки: Starscream (веб-сокеты), SnapKit(верстка экранов), Kingfisher (ассинхронная загрузка картинок), Koloda (тиндер-like карточки), PullUp (Собственноручно написан). В качестве архитектуры была выбрана архитектура VIPER. Ее преимущество в том, что каждая из сущностей предоставляет возможность контролировать более детально, ту или иную, логику (верстка, бизнес-логика). В дальнейшем бы это позволило покрыть 99% unit(ui)-тестами проект, чтобы избежать багов. Также VIPER предоставляет отличное разделение абстракций.
pod instal
Основной бекенд приложение. Отвечает за работу с АПИ mos.ru. Технологический стек - Digital Ocean + linux(Ubuntu 19) + Python3 + Flask + sqlite3. В качестве архитектуры была выброана MVC (Model View Controller)
Сервер крутится на http://157.230.221.235:5000/ (Digital Ocean)
Все запросы возвращают Result с требуемым объектом при успехе. При ошибке сервер возвращает 500 ошибку и текстовое описание проблемы в Result
GET - /feed - Получение списка мероприятий
GET - /feed/{userId} - Получение персональной ленты для пользователя userId
POST - /stats - Отправка данных по калибровке
Afisha
{
"id": Integer, # id афишы на базе mos.ru
"title": String # Короткое оглавление меропрития
"text": String # Описание мероприятия
"free": Bool # Бесплатное ли
"img": String # Ссылка на картинку под мобильное приложение
}
Like
{
"id": Integer # id афиши
"userId": Integer # id пользователя
"value": Integer # Оценка пользователя 1 или -1
}
Result
{
"result": Object # Результат выполнения запроса если код 200
"errorMessage": String # Текстовое описание ошибки если код 500
}
Требуется python3 и pip3
pip3 install flask
pip3 install requests
pip3 install bs4
python3 app.py
Микросервис для фичи парного подбора приложения. Технологический стек - Digital Ocean + linux(Ubuntu 19) + Python3 + Aiohttp + Websockets
GET - / - Подключение к сокету
Сокет принимает сообщения в формате JSON
{
"userId": Integer*
"action": enum: String*
"code": String*
"afisha": Integer
"value": Integer
}
Action:
"new" - Для открытия новой комнаты. Требует code
"join" - Для подключения к комнате. Требует code
"mark" - Для оценки афиши. Требует code, afisha, value
"finish" - Для завершения подборки. Требует code
Требуется python3 и pip3
pip3 install aiohttp
pip3 install requests
python3 app.py