Авторы: Городкова Ксения, Грудцына Виктория, Толстограева Виктория
GoodRoad — мобильное приложение для построения пеших инклюзивных маршрутов с учетом состояния дороги, препятствий на пути и персональных ограничений пользователя.
Обычный навигатор зачастую показывает только самый короткий или быстрый путь, но не объясняет, насколько он удобен на практике. Вместе с тем на маршруте могут встретиться лестницы, высокие бордюры, крутые участки дороги и другие барьеры. GoodRoad решает именно эту задачу: приложение помогает заранее понять, подходит ли путь конкретному человеку, показывает проблемные места и позволяет собирать отзывы о доступности дорог и объектов.
Дополнительно в GoodRoad есть задания, награды за их выполнение и волонтерский модуль. Пользователи могут получать баллы за написание отзывов и помощь другим людям, обменивать их на предложения партнеров, а также создавать запросы на сопровождение и откликаться на них.
- Редактирование профиля
- Выбор препятствий, которые нужно избегать при построении маршрута, и их тяжесть
- Построение маршрута с учетом ограничений пользователя
- Возможность оставить заявку на сопровождение волонтера по маршруту
- Создание, редактирование и удаление отзывов о состоянии дороги или объекта
- Добавление фотографий к отзывам
- Просмотр статуса модерации отзыва и начисленных за него баллов
- Просмотр заданий, связанных с отзывами, для получения дополнительных баллов
- Покупка наград за накопленные баллы
- Просмотр истории операций с баллами: начисление/ списание
- Просмотр таблицы лидеров по количеству баллов
- Взаимодействие с лентой заявок о помощи
- Отклик на заявки пользователей и отмена отклика
- Просмотр заявок, на которые волонтер откликнулся
- Просмотр волонтерских заданий для получения дополнительных баллов
- Просмотр отзывов, отправленных на проверку
- Одобрение и отклонение отзывов
- Одобрение и отклонение волонтерских заявок
- Все возможности обычного модератора
- Добавление и удаление других модераторов
Достаточно скачать приложение по ссылке.
| Категория | Технологии | Назначение |
|---|---|---|
| Язык | Kotlin | Основной язык клиентского приложения |
| UI | Jetpack Compose, Material 3 | Построение экранов и компонентов интерфейса |
| Навигация | Navigation Compose | Переходы между экранами и сценариями |
| Состояние экрана | ViewModel, StateFlow | Хранение состояния и обработка логики экранов |
| Асинхронность | Kotlin Coroutines | Выполнение сетевых и фоновых операций |
| Сеть | Retrofit, OkHttp | Работа с REST API |
| JSON | Gson Converter | Сериализация и десериализация DTO |
| Карты | MapLibre | Отображение карты и маршрутов |
| Геолокация | Google Play Services Location | Получение текущего местоположения пользователя |
| Изображения | Coil | Загрузка и отображение изображений |
| Аутентификация | JWT, OkHttp Interceptor, OkHttp Authenticator | Добавление access token в запросы и автоматическое обновление токенов |
| Хранение токенов | EncryptedSharedPreferences | Локальное защищенное хранение access и refresh token |
| Слой | Назначение |
|---|---|
| data | Работа с сетевыми запросами, работа с препятствиями, маршрутами и локацией |
| domain/model | Модели предметной области приложения: координаты, препятствия, геолокации, места и связанные данные |
| ui | Общие UI-компоненты, элементы форм, обработка ошибок, карта и цветовая гамма |
| modules | Работа с DTO, репозиториями, cостояние экранов, обработка действий пользователя, связь UI и данных |
app/src/main/java/com/example/goodroad/
├── MainActivity.kt
├── MapActivity.kt
├── data/
│ ├── network
│ └── obstacle
├── domain/model
├── ui/
│ ├── buttons/
│ ├── errors/
│ ├── fields/
│ ├── map/
│ └── theme/
├── validation
└── modules/
├── auth/
├── maps/
├── moderationReview/
├── moderator/
├── review/
├── rewards/
├── tasks/
├── user/
└── volunteer/
app/src/test/java/com/example/goodroad/
├── data/
│ ├── network
│ └── obstacle
└── modules/
├── auth/
├── moderationReview/
├── moderator/
├── review/
├── rewards/
└── user/
