Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🏗️ Development Guide

This document summarizes project-specific conventions for developers.

For full details, see:

📦 Modules

  • Follow Module Organization and Module Structure
  • Place new code in feature:*, core:*, or library:* modules
  • Do not add new code in legacy:* modules
  • Keep API/impl separation in all modules

🏛️ Architecture

  • Follow Architecture
  • Dependencies must flow in one direction only
  • UI built with Jetpack Compose + MVI pattern
  • Domain logic implemented in Use Cases
  • Data handled via Repository pattern

⚙️ Dependency Injection

  • Use Koin with constructor injection
  • Avoid static singletons and service locators

🧪 Testing

  • Follow the Testing Guide for frameworks and strategy.
  • Project conventions:
    • Name the object under test testSubject
    • Prefer fakes over mocks when possible
    • Use descriptive test names and AAA (Arrange–Act–Assert) pattern

🎨 Code Style

  • Follow the Code Quality Guide for formatting and tooling.
  • Code style quick reminders
    • Prefer immutability (val over var)
    • Use extension functions for utilities
    • Keep functions small and focused

Do’s and Don’ts

  • ✅ Write modular, testable code with clear boundaries
  • ✅ Document non-obvious logic and decisions (link ADRs when appropriate)
  • ✅ Keep module boundaries clean
  • ✅ Add or update tests for new/changed code
  • ✅ Run Spotless, Detekt, and Lint checks locally before committing
  • ❌ Don’t commit new code to legacy:* modules, unless strictly necessary
  • ❌ Don’t bypass the architecture and layering (e.g., UI calling data sources directly)
  • ❌ Don’t introduce circular dependencies between modules
Last change: , commit: e5ee4ca