MVVMTemplate

Project Url: Drjacky/MVVMTemplate
Introduction: An Android Template with MVVM and Clean Architecture
More: Author   ReportBugs   
Tags:

Language License Actions Status Build Status Quality Gate Status FOSSA Status CodeScene Code Health

A simple Android template that lets you create an Android project quickly.

How to use 👣

Just click on Use this template button to create a new repo starting from this template.

Architecture 🏗

This project follows Clean Architecture with MVVM and is organized into a multi-module structure:

MVVMTemplate/
├── app/                     # Application module (MainActivity, Navigation, DI wiring)
├── build-logic/             # Convention plugins (shared build configuration)
├── core/
│   ├── common/              # Shared base classes, utilities, DataStore
│   ├── data/                # Repository implementations, data sources, API models
│   ├── domain/              # Use cases, domain models, repository interfaces
│   ├── network/             # Retrofit setup, OkHttp configuration, network response handling
│   ├── testing/             # Shared test utilities (TestDispatcherRule, fakes, test data)
│   └── ui/                  # Shared Compose UI components, theming, screen states
└── feature/
    └── products/            # Products feature (list, detail, choose screens)

The app demonstrates both RxJava and Coroutines side by side - users choose which reactive approach to explore at runtime via a choose screen.

Features 🕹

Core

Reactive & Concurrency

Dependency Injection

Networking & Serialization

Navigation

  • Navigation 3 - Type-safe Compose navigation with NavKey and NavDisplay

UI & Theming

  • Material 3 with dynamic color, light/dark theme, edge-to-edge support
  • Lottie - Vector animations
  • Coil - Image loading
  • Palette - Dynamic card coloring from image palettes
  • Paging 3 - Pagination (both Coroutine and RxJava data sources)
  • Compose stability configuration (compose_compiler_config.conf) and compiler metrics/reports

Data

Quality & Tooling

Testing

  • Unit tests with Fakes over Mocks pattern
  • Truth - Fluent assertions
  • Turbine - Flow testing
  • Coroutines Test - TestDispatcherRule for deterministic coroutine testing
  • Shared core:testing module with reusable fakes and test data

Accessibility & Internationalization

  • Semantic properties for TalkBack (mergeDescendants, heading, contentDescription)
  • Touch target sizing (48dp minimum)
  • String resources with translator context comments
  • Non-transitive R classes for proper resource scoping

CI 🏭

This template uses GitHub Actions as CI.

Available workflows:

Tasks 🔧

  • dependencyUpdates - Displays the dependency updates for the project
  • detektAll - Runs static Kotlin code analysis for the whole project
  • buildHealth - Provides advice for managing dependencies and applied plugins
  • ossIndexAudit - Scans dependencies using Sonatype OSS Index for known vulnerabilities

References 🧷

Contributing 🤝

Feel free to open an issue or submit a pull request for any bugs/improvements.

Result 📺

License ⚖️

FOSSA Status

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools