Skip to content

Jetpack Compose auth flow with nested navigation graphs and shared ViewModel (MVVM)

Notifications You must be signed in to change notification settings

XataBq/JetpackApp

Repository files navigation

JetpackApp — Auth Flow на Jetpack Compose

Портфолийный Android-проект на Jetpack Compose, в котором реализован authentication flow с архитектурой, приближённой к production-подходу.

📍 Москва, Россия
💬 Telegram: https://t.me/ferlow


Цель проекта

Показать умение:

  • проектировать навигацию в Compose
  • грамотно работать со state и ViewModel
  • разделять UI и бизнес-логику
  • писать поддерживаемый и масштабируемый код

Проект используется как case-study для стажировки Android-разработчика.


Реализовано

  • Navigation Compose с nested graphs (auth / main)
  • Общий AuthViewModel, заскоупленный на Graph.Auth
  • Навигация через UiEvent (однонаправленные события)
  • Передача аргументов через route (email) + SavedStateHandle
  • Вынос общих UI-компонентов в отдельный пакет
  • Чёткая модель UI-состояний (sealed states, validation state)
  • Отсутствие бизнес-логики в composable-функциях

Архитектура

UI → ViewModel → (Domain) → (Data)

Ключевые решения:

  • ViewModel живёт на уровне навигационного графа и шарится между экранами
  • Навигация инициируется из ViewModel через события
  • Дублирование состояния избегается
  • UI полностью управляется состоянием

Стек

  • Kotlin
  • Jetpack Compose
  • Navigation Compose
  • MVVM
  • Coroutines

Code style

В проекте используется ktlint для единого стиля Kotlin-кода.

  • Проверка: ./gradlew ktlintCheck
  • Форматирование: ./gradlew ktlintFormat

Правила задаются в .editorconfig.


Планы развития

  • Подключить Dependency Injection (Hilt)
  • Унифицировать обработку ошибок
  • Добавить unit-тесты для ViewModel
  • Улучшить UI и добавить скриншоты

Запуск проекта

  1. Клонировать репозиторий
  2. Открыть в Android Studio
  3. Запустить на эмуляторе или устройстве

About

Jetpack Compose auth flow with nested navigation graphs and shared ViewModel (MVVM)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages