Skip to content
@GoodRoad-Project

GoodRoad-Project

GoodRoad banner

GoodRoad

Авторы: Городкова Ксения, Грудцына Виктория, Толстограева Виктория

О проекте

GoodRoad — мобильное приложение для построения пеших инклюзивных маршрутов с учетом состояния дороги, препятствий на пути и персональных ограничений пользователя.

Обычный навигатор зачастую показывает только самый короткий или быстрый путь, но не объясняет, насколько он удобен на практике. Вместе с тем на маршруте могут встретиться лестницы, высокие бордюры, крутые участки дороги и другие барьеры. GoodRoad решает именно эту задачу: приложение помогает заранее понять, подходит ли путь конкретному человеку, показывает проблемные места и позволяет собирать отзывы о доступности дорог и объектов.

Дополнительно в GoodRoad есть задания, награды за их выполнение и волонтерский модуль. Пользователи могут получать баллы за написание отзывов и помощь другим людям, обменивать их на предложения партнеров, а также создавать запросы на сопровождение и откликаться на них.

Реализованная функциональность

Для пользователя

  • Регистрация, вход и восстановление пароля;
  • Просмотр и редактирование профиля;
  • Выбор препятствий, которых нужно избегать при построении маршрута, и настройка их тяжести;
  • Построение маршрута с учетом пользовательских ограничений;
  • Создание, редактирование и удаление отзывов о состоянии дороги или объекта;
  • Добавление фотографий к отзывам;
  • Просмотр статуса модерации отзыва и начисленных за него баллов;
  • Создание заявки на помощь в сопровождении маршрута;
  • Создание заявки на волонтерство;
  • Просмотр заданий, связанных с отзывами и волонтерством;
  • Просмотр баланса, истории операций и таблицы лидеров;
  • Покупка наград за накопленные баллы.

Для волонтера

  • Просмотр ленты заявок на помощь;
  • Отклик на заявки пользователей;
  • Просмотр заявок, на которые волонтер уже откликнулся;
  • Просмотр волонтерских заданий для получения дополнительных баллов.

Для модератора

  • Просмотр отзывов, отправленных на проверку;
  • Одобрение и отклонение отзывов;
  • Одобрение и отклонение заявок на волонтерство.

Для главного модератора

  • Все возможности обычного модератора;
  • Добавление и удаление других модераторов.

Детали запуска приложения

Достаточно скачать приложение по ссылке.

Архитектура

GoodRoad состоит из двух частей:

  • Android-клиент отвечает за пользовательский интерфейс и экранные сценарии;
  • Сервер отвечает за REST API, бизнес-логику, аутентификацию, работу с базой данных, препятствиями, маршрутами, отзывами, модерацией, заданиями, баллами, наградами и волонтерским модулем.

Общая схема взаимодействия:
Android Client → REST API → Backend Service Layer → Repository Layer → PostgreSQL

Дополнительно сервер взаимодействует с Redis для кеширования, GraphHopper для построения маршрутов и Yandex Object Storage для хранения изображений.

Деплой и CI/CD

Процесс автоматического деплоя реализован с помощью 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

Popular repositories Loading

  1. GoodRoad-Client GoodRoad-Client Public

    Приложение для построения инклюзивных маршрутов

    Kotlin 5

  2. GoodRoad-Server GoodRoad-Server Public

    Java 4

  3. .github .github Public

    3

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…