Android-приложение для работы с GitHub, разработанное на Kotlin и Jetpack Compose.
Проект создан для практики современной Android-разработки, многомодульной архитектуры и работы с GitHub API.
- 🔐 Авторизация пользователя
- 👤 Работа с профилем GitHub
- 📦 Просмотр репозиториев
- 🔎 Просмотр подробной информации о репозитории
- 🌐 Получение данных через GitHub API
- 🧩 Разделение приложения на независимые feature-модули
- Kotlin
- Jetpack Compose
- Material 3
- Android SDK
- Navigation Compose
- Kotlin Coroutines
- Clean Architecture
- MVVM
- Multi-module architecture
- Разделение на
data,domain,featureиcoreмодули
- Koin
- Ktor Client
- OkHttp
- Kotlinx Serialization
- GitHub API
Проект разделён на несколько уровней и feature-модулей:
GitHubClient/
│
├── app/
│ └── Application module
│
├── domain/
│ └── Business logic
│
├── data/
│ └── GitHub API
│ └── Repository implementations
│
├── feature/
│ ├── authorization/
│ │ ├── AuthScreen
│ │ └── AuthViewModel
│ │
│ ├── home/
│ │ ├── HomeScreen
│ │ └── HomeViewModel
│ │
│ └── repo-info/
│ └── Repository details
│
└── core/
├── designsystem/
├── ui/
└── storage/
Такое разделение позволяет изолировать бизнес-логику от Android UI и инфраструктурного кода, а отдельные функциональные возможности приложения развивать независимо.
Основная зависимость между слоями выглядит следующим образом:
┌─────────────┐
│ app │
└──────┬──────┘
│
┌──────────┼──────────┐
▼ ▼ ▼
┌────────────┐ ┌────────┐ ┌──────────────┐
│ feature │ │ data │ │ core │
└──────┬─────┘ └───┬────┘ └──────────────┘
│ │
└─────┬─────┘
▼
┌──────────┐
│ domain │
└──────────┘
Функциональность приложения вынесена в отдельные feature-модули:
feature:authorization— авторизация пользователя;feature:home— главный экран;feature:repo-info— информация о репозитории.
Общие компоненты вынесены в core:
core:designsystem— дизайн-система и UI-компоненты;core:ui— переиспользуемые UI-компоненты;core:storage— локальное хранение данных.
Слой data отвечает за работу с внешними источниками данных, а domain содержит бизнес-логику и контракты приложения.
Приложение взаимодействует с GitHub REST API для получения данных о пользователях и репозиториях.
GitHub API предоставляет REST-интерфейс для получения данных и создания интеграций с GitHub. Подробнее: GitHub REST API Documentation
- Android Studio
- JDK 11+
- Android SDK 36
- Android device или emulator с Android 8.0 (API 26) и выше
Клонируйте репозиторий:
git clone https://github.com/meeten/GitHubClient.gitОткройте проект в Android Studio и дождитесь завершения Gradle Sync.
После этого запустите конфигурацию app на эмуляторе или физическом устройстве.
Основная цель проекта — практика разработки Android-приложения с использованием современных подходов:
- построение многомодульной архитектуры;
- применение Clean Architecture;
- работа с Jetpack Compose;
- взаимодействие с REST API;
- Dependency Injection;
- разделение UI, бизнес-логики и слоя данных;
- создание переиспользуемых UI-компонентов.
Илья
GitHub: @meeten