ДОКУМЕНТАЦИЯ
Рассмотрим основные положения, которые включается в себя данная платформ.
ГЛАВА I
Локация
Для решения вопроса о нахождении близлежащих площадок используется технология знакомая любителям старого Top Gear (Серия, где Хаммонда спасают из ебеней с помощью спасательных часов, при разинтеграции которых на помощь прилетает вертолёт, который входит в стоимость данных часов. В качестве координат используется технология под названием Open Location Code (OLC))
OLC
Открытый код местоположения (Open Location Code — OLC) — система геокодирования для определения области любой точки Земли[1].

Код был разработан в инженерном офисе Google в Цюрихе[2], и опубликован в конце октября 2014 года[3]. Коды местоположения, созданные системой OLC, называются «плюс-кодами».

Открытый код местоположения — способ кодирования местоположения в символы, которые проще использовать, чем координаты в виде широты и долготы. Плюс-коды предназначены для использования в качестве уличных адресов и особенно полезны в случаях, когда нет официальной системы идентификации зданий — названия улиц, номеров домов и почтовых индексов[4].

Плюс-коды получаются преобразованием координат широты и долготы, поэтому любая точка на Земле уже адресуется плюс-кодом[5]. По длине они похожи на телефонный номер — например, 849VCWC8+R9 — но зачастую сокращаются до четырёх или шести цифр в сочетании с наименованием местности (CWC8+R9, Mountain View). Расположенные рядом места имеют схожие коды. Их можно кодировать или декодировать в автономном режиме. Набор символов для кодирования плюс-кодов составлен таким образом, чтобы исключить применение похожих на вид символов для уменьшения путаницы и ошибок, так же исключены гласные, чтобы исключить совпадение плюс-кода с существующими словами. Плюс-коды не чувствительны к регистру, поэтому их можно легко передать по телефону[6].
ГЛАВА I.I
Площадки рядом с пользователем
При положительном ответе пользователем, на вопрос о разрешении использовании его локации, координаты преобразуются в OLC код. При группировки данных кодов, можно регулировать площадь, внутри которой происходит поиск игровых площадок (По умолчанию используется квадрат площадью около двух километров, где центр квадрата - месторасположение пользователя). Все методы, о нахождении близлежащих площадок в качестве входных параметров используют именно OLC код.
Метод
GET Playground - Площадки с пагинацией
GET Playground/allPlaygrounds - Все площадки в городе по указанному фильтру (Обязательно указать тип игры)
GET Playground/withGames - Все площадки, на которых запланированы игры
GET Playground/near - Все площадки рядом
Parameters
Для всех запросов, кроме ближайших площадок
cityID - айди города
gameID - айди игры

Для пагинации
page - номер страницы
per - сколько площадок на одной странице (по умолчанию 50)

Для ближайших площадок
zones - Массив OLC кодов.
Response
Для пагинации
playgrounds: [Playground]
page: Page

Для всех площадок и ближайших площадок
playgrounds: [Playground]

ГЛАВА II
Площадка
Включает в себя - Адрес и маршрут, который можно построить используя Apple или Google карты.
Ближайшие игры, сознанные другими пользователями на данной площадке.
Отзывы о площадке и возможность редактирования информации о площадке (Фото, доступные игры, описание)
Метод
GET Playground/ - Вернёт площадку с играми и создателем.
Parameters
playgroundID - айди площадки
Response
Playground
ГЛАВА II.I
Сортировка площадок
• На основе данных, полученных из определённых источников, каждая из площадок, по возможности, сортируется по группам, среди которых: Футбол, Баскетбол, Волейбол, Хоккей, Велоспорт и другие.
• Если пользователь разрешил доступ к его месторасположению, вначале будут показаны ближайшие площадки.
• Сортировка по площадкам, на которых запланированы игры.
• Сортировка по типу покрытия, возрастным критериям - в планах.

ГЛАВА III
Игры
Концепция игры включает в себя:

• Площадка, на которой и состоится игра.
• Время и тип игры.
• Список откликнувшихся игроков.
• Чат, для обсуждения моментов.
Метод
POST Playground/game - Запланировать игру
GET Playground/game - Информация по игре, отклики, чат
Body
POST:

userID: UUID
playgroundID: UUID
date: Date
about: About
gameIDs: [Int]
Parameters
GET:

gameID : UUID
Response
Game
ГЛАВА III.I
Подписка
Пользователь, при желании, может подписаться на игры на выбранной площадке. В момент создания игры он получит push-уведомление.
Метод
GET Playground/subscription/playgroundID
Body
Response
Subscription
id: UUID?
user: User
playground: Playground
gameIDs: [Int]
playgroundID: UUID
userID: UUID
isEnabled: Bool
ГЛАВА III.II
Чат
Для удобства обсуждения моментов запланированной игры, для пользователя предусмотрен чат, в рамках конкретной игры.
Метод
WS /ws
Body
Команды

case typing = "typing" - пользователь печатает
case auth = "auth" - авторизация (автоматически подпишется на все чаты, к которым присоединились)
case myLocation = "myLocation" (шлём текущую локацию пользователя)
case subscribe = "subscribe" (вручную подпишемся на чат, к которому только, что подсоединились)
Response
Subscription
id: UUID?
user: User
playground: Playground
gameIDs: [Int]
playgroundID: UUID
userID: UUID
isEnabled: Bool

ГЛАВА IV
Активность
Важные аспекты взаимодействия пользователя с платформой, выражаются в ленте активности, которая включает в себя такие моменты как:

• Регистрация пользователя
• Создание/Редактирование площадки
• Создание игры
• Отклик/Разотклик на игру
• Новая игра из списка подписок
Метод
GET activity - активность пользователя
Body
Authorization
Response
Activity

ГЛАВА V
Пользователь
Экран пользователя включает в себя информацию о нём. Возможность добавить аватар, обновить имя и информацию о себе, настройки, а так же следующие пункты:

• Площадки, созданные пользователем
• Игры, созданные пользователем
• Отклики пользователя
Метод
GET Playgrounds - Площадки созданные пользователем
GET Games - Игры запланированные пользователем
GET Follows - Отклики пользователя
Parameters
Authorization
Response
playgrounds: [Playground]
page: [Game]
follows: [Follow]
БИЗНЕС-МОДЕЛЬ
По вопросам: hello@serjey.com
ГЛАВА I
Реклама
В рамках данной платформы пользователю предлагается возможность активно провести досуг, так или иначе сопряжённый со спортивными объектами. Очевидно, что существует гипотетическая заинтересованность со стороны владельцев коммерческих спортивных объектов привлечь новых посетителей. Для решения данной, теоретической потребности предлагается:
ГЛАВА I.I
Продвижение спортивных объектов
Каждый пользователь приложения может добавить свой спортивный объект, оплатив его размещение на указанные период. По средствам визуального оформления, а также ротации в общем списке объектов, оплаченный объект будет наиболее акцентирован пользователю, что поможет привлечь новых арендаторов/посетителей/игроков.
ГЛАВА I.II
Проведение турниров, спортивных мероприятий.
Каждый пользователь приложения может добавить свой спортивный объект, оплатив его размещение на указанные период. По средствам визуального оформления, а также ротации в общем списке объектов, оплаченный объект будет наиболее акцентирован пользователю, что поможет привлечь новых арендаторов/посетителей/игроков.
КОНКУРС
В процессе
ГЛАВА I
Решение в рамках конкурса
В Москве находится большое количество спортивных городских объектов, которые остаются незамеченными гражданами из-за недостатка информации о них.

Разработайте интерактивную карту с фильтрами под каждый вид спорта и рекомендациями по развитию инфраструктуры района, составленную на основе анализа открытой спортивной инфраструктуры в городе.