Gallery App — учебное приложение для Android, разработанное в рамках практического задания WebAnt. Оно демонстрирует работу с REST API галереи, позволяет просматривать ленту фотографий, загружать свои изображения и управлять аккаунтом. Интерфейс полностью построен на Jetpack Compose и поддерживает светлую/тёмную тему.
- Анимированный Splash Screen с логотипом WebAnt.
 - Авторизация и регистрация пользователя с валидацией полей.
 - Поддержка хранения и обновления токенов с помощью 
TokenInterceptorиTokenAuthenticator. - Лента фотографий с постраничной загрузкой через Paging и поиском по названию.
 - Загрузка изображения из памяти устройства через 
galleryLauncherи отправка на сервер. - Просмотр и редактирование данных фотографии.
 - Раздел «Профиль» со сменой пароля и настройками.
 
Проект использует паттерн MVI. Каждая функциональность оформлена отдельным пакетом (auth, home, add_photo, profile, onboarding) с подпакетами data, domain и presentation по чистой архитектуре.
- Навигация построена через 
Navigation Composeи типобезопасные маршруты. Состояния экранов описаны как сериализуемые sealed классы вScreens, графы объявлены вGraphs, а переходы выполняются с помощью расширенияanimatedTransition. - Данные пользователя хранятся в 
DataStoreсProtoBuf(UserDataStore), что обеспечивает type‑safe сохранение статуса онбординга и авторизации. - DI реализовано через Hilt. Модули располагаются в пакете 
diи предоставляютRetrofit,OkHttpClientс перехватчиками токенов и репозитории для работы с API. - Дизайн‑система включает собственную тему 
WebAntPracticeTheme, палитру цветов, шейпы и типографику. Все компоненты интерфейса из UiKit'а (AppBars,Buttons,CustomTextFieldи др. также необходимые по макету) переиспользуются во всех экранах. - Все строки и ресурсы вынесены в 
strings.xmlи обращение к ним происходит черезR.string.*, что упрощает локализацию. - Для загрузки изображений используется Coil, а сетевые запросы выполняются через Retrofit с логированием и хранением cookies.
 - Secrets Plugin используется для сокрытия конфиденциальной информации в 
local.properties. Для запуска будет необходимо указать нужные данные:BASE_API_URL,CLIENT_IDиCLIENT_SECRET. Пример файлаlocal.properties, если захотите скачать и запустить проект: 
    sdk.dir=...
    BASE_API_URL=https://example.api/
    CLIENT_ID=...
    CLIENT_SECRET=...| Технология | Описание | 
|---|---|
| Jetpack Compose | Построение пользовательского интерфейса и навигации | 
| Hilt | Внедрение зависимостей | 
| Retrofit + OkHttp | Работа с HTTP API и перехват запросов | 
| DataStore (ProtoBuf) | Хранение настроек и токенов пользователя | 
| Paging | Постраничная подгрузка списка фотографий | 
| Kotlinx Serialization | Сериализация аргументов для type‑safe навигации + API запросов | 
| Coil | Загрузка изображений | 
| Secrets Plugin | Сокрытие конфиденциальной информации | 
Ссылка на текущую версию Releases
Прямая ссылка на установку .zip
Прямая ссылка на установку .apk
Для ознакомления с другими работами автора вы можете посетить портфолио на Behance.














