Skip to content

Repository files navigation

GitHub Client

Android-приложение для работы с GitHub, разработанное на Kotlin и Jetpack Compose.

Проект создан для практики современной Android-разработки, многомодульной архитектуры и работы с GitHub API.

Возможности

  • 🔐 Авторизация пользователя
  • 👤 Работа с профилем GitHub
  • 📦 Просмотр репозиториев
  • 🔎 Просмотр подробной информации о репозитории
  • 🌐 Получение данных через GitHub API
  • 🧩 Разделение приложения на независимые feature-модули

Стек

Android

  • Kotlin
  • Jetpack Compose
  • Material 3
  • Android SDK
  • Navigation Compose
  • Kotlin Coroutines

Архитектура

  • Clean Architecture
  • MVVM
  • Multi-module architecture
  • Разделение на data, domain, feature и core модули

DI

  • Koin

Networking

  • 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  │
          └──────────┘

Multi-module подход

Функциональность приложения вынесена в отдельные feature-модули:

  • feature:authorization — авторизация пользователя;
  • feature:home — главный экран;
  • feature:repo-info — информация о репозитории.

Общие компоненты вынесены в core:

  • core:designsystem — дизайн-система и UI-компоненты;
  • core:ui — переиспользуемые UI-компоненты;
  • core:storage — локальное хранение данных.

Слой data отвечает за работу с внешними источниками данных, а domain содержит бизнес-логику и контракты приложения.

API

Приложение взаимодействует с 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


About

Мобильный клиент для просмотра репозиториев

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages