Проект команды OnGame для решения кейса "Парковед"
Решение состоит из трех приложений: бэкенд (solo.backend), веб сервис (solo.frontend) и мобильное приложение (solo.mobile)
Бэкенд написан с использованием Asp.Net Core, в проекте задействованы следующие nuget-пакеты: Autofac Microsoft.EntityFrameworkCore Newtonsoft.Json
В качестве СУБД используется MSSQL
Для того, чтобы запустить приложение необходима Visual Studio Community последней версии с установленным .Net Core 3.1.
В системе должен быть запущен инстанс MSSQL, названный "SQLSERVER", с режимом аутентификации через учетную запись Windows (Windows Authentication).
Либо необходимо изменить строку подключения в Solo.Api/appsettings.development.json
в соответствии настройками существующего инстанса MSSQL.
Проект разбит на 4 "слоя" - Solo.Api - непосредственно апи, Solo.Data - на данный момент только инфраструктура для взаимодействия с БД и репозитории, Solo.Domain - доменные и вспомогательный сущности, Solo.Common - общая вспомогательная функциональность.
С точки зрения АПИ реализованы эндпоинты для получения списка парков, получения/редактирования объектов парков и для работы с билетами: получение списка билетов, "покупка" и "использование" билетов.
Аутентификация сделана максимально простым способом - проверяется наличие хедера "Authorization", в котором подразумевается наличие имейла пользователя, по которому он и идентифицируется. Если хедера нет, значит пользователь зашел с админки и является админом. Данный способ был выбран из-за отсутствия времени на реализацию нормальной аутентификации (впрочем, и многие другие решения продиктованы сжатыми сроками).
Для запуска фронтенда должен быть установлен yarn. Нужно открыть терминал в папке solo.frontend и выполнить команду yarn install
. Необходимо создать файл с переменными окружения (например, .env.development.local
в корне проекта со следующим содержанием: REACT_APP_API_URL=https://e5ca24861b23.ngrok.io
, url - тот, на котором запущен бэкенд) а затем выполнить команду yarn start
.
Веб приложение написано на react/typescript, из крупных пакетов использованы "material-ui", "react-router" и "axios", остальные задействованные пакеты можно увидеть в packages.json.
Реализована функциональность: выбор парка, редактирование объектов парка. Для выбора объекта можно кликать по маркеру на карте. Также при редактировании координат можно кликнуть по карте чтобы не вводить их вручную.
Мобильное приложение создано с использованием react-native и платформы expo. В качестве карт используются google maps, которые требуют API-ключ. Для запуска необходима платформа expo (https://docs.expo.io/) а также эмулятор смартфона на базе андроид, либо физическое устройство. Может понадобиться установить ADB (https://developer.android.com/studio/releases/platform-tools).
npm install --global expo-cli
yarn install
yarn start
Реализован выбор парка, просмотр объектов парка, "покупка" и "использование" билетов.
Для того, чтобы мобильное приложение могло посылать запросы на бэкенд, необходимо либо пробросить порты в сети и указать соответствующий baseURL в axios.ts, либо можно воспользоваться решениями для тунеллирования трафика, например ngrok (аналогично, нужно обновить baseUrl в axios.ts)
Веб-сервис размещен по адресу https://solo-290412.web.app/ На главной странице есть ссылка на скачивание apk-файла (https://drive.google.com/file/d/1CCZ_8RrhQoSD41xdvqHBK3SRPqRSV5y3/view?usp=sharing)