Авторы: Городкова Ксения, Грудцына Виктория, Толстограева Виктория
GoodRoad — мобильное приложение для построения пеших инклюзивных маршрутов с учетом состояния дороги, препятствий на пути и персональных ограничений пользователя.
Обычный навигатор зачастую показывает только самый короткий или быстрый путь, но не объясняет, насколько он удобен на практике. Вместе с тем на маршруте могут встретиться лестницы, высокие бордюры, крутые участки дороги и другие барьеры. GoodRoad решает именно эту задачу: приложение помогает заранее понять, подходит ли путь конкретному человеку, показывает проблемные места и позволяет собирать отзывы о доступности дорог и объектов.
Дополнительно в GoodRoad есть задания, награды за их выполнение и волонтерский модуль. Пользователи могут получать баллы за написание отзывов и помощь другим людям, обменивать их на предложения партнеров, а также создавать запросы на сопровождение и откликаться на них.
- Регистрация, вход и восстановление пароля;
- Просмотр и редактирование профиля;
- Выбор препятствий, которых нужно избегать при построении маршрута, и настройка их тяжести;
- Построение маршрута с учетом пользовательских ограничений;
- Создание, редактирование и удаление отзывов о состоянии дороги или объекта;
- Добавление фотографий к отзывам;
- Просмотр статуса модерации отзыва и начисленных за него баллов;
- Создание заявки на помощь в сопровождении маршрута;
- Создание заявки на волонтерство;
- Просмотр заданий, связанных с отзывами и волонтерством;
- Просмотр баланса, истории операций и таблицы лидеров;
- Покупка наград за накопленные баллы.
- Просмотр ленты заявок на помощь;
- Отклик на заявки пользователей;
- Просмотр заявок, на которые волонтер уже откликнулся;
- Просмотр волонтерских заданий для получения дополнительных баллов.
- Просмотр отзывов, отправленных на проверку;
- Одобрение и отклонение отзывов;
- Одобрение и отклонение заявок на волонтерство.
- Все возможности обычного модератора;
- Добавление и удаление других модераторов.
Достаточно скачать приложение по ссылке.
GoodRoad состоит из двух частей:
- Android-клиент отвечает за пользовательский интерфейс и экранные сценарии;
- Сервер отвечает за REST API, бизнес-логику, аутентификацию, работу с базой данных, препятствиями, маршрутами, отзывами, модерацией, заданиями, баллами, наградами и волонтерским модулем.
Общая схема взаимодействия:
Android Client → REST API → Backend Service Layer → Repository Layer → PostgreSQL
Дополнительно сервер взаимодействует с Redis для кеширования, GraphHopper для построения маршрутов и Yandex Object Storage для хранения изображений.
Процесс автоматического деплоя реализован с помощью GitHub Actions и включает следующие этапы:
- При пуше в ветку
mainзапускается пайплайн деплоя. - Для серверной части и базы данных выполняется:
- Сборка JAR-файла
- Передача JAR-файл на сервер через SSH
- Перезапуск systemd-сервиса, который подхватывает архив и обновляет сервер
| Категория | Технологии |
|---|---|
| Язык | Java 17 |
| Framework | Spring Boot 3 |
| Web | Spring Web |
| Безопасность | Spring Security, JWT |
| Валидация | Spring Validation |
| Работа с БД | Spring Data JPA, Hibernate |
| Миграции БД | Flyway |
| База данных | PostgreSQL |
| Кеширование | Redis |
| Object Storage | Yandex Object Storage |
| Маршрутизация | GraphHopper |
| Сборка | Gradle |
| Контейнеризация | Docker, Docker Compose |
| Инфраструктура и DevOps | Nginx, Certbot, Yandex.Cloud |
| CI/CD | GitHub Actions |
| Тестирование API | Spring Boot Test |
| Категория | Технологии |
|---|---|
| Язык | Kotlin |
| UI | Jetpack Compose, Material 3 |
| Навигация | Navigation Compose |
| Состояние экрана | ViewModel, StateFlow |
| Асинхронность | Kotlin Coroutines |
| Сеть | Retrofit, OkHttp |
| JSON | Gson Converter |
| Изображения | Coil |
| Аутентификация | JWT, OkHttp Interceptor, OkHttp Authenticator |
