app/
βββ src/
βββ main/
βββ java/com/exemplo/app/
βββ presentation/ π Presentation layer (UI)
β βββ components/ -> Reusable Composables
β βββ screens/ -> Screens (each with its ViewModel)
β β βββ home/
β β βββ login/
β β βββ settings/
β βββ navigation/ -> Routes, NavHost
β
βββ domain/ π Domain layer (Business rules)
β βββ model/ -> Domain entities
β βββ repository/ -> Interfaces (repository contracts)
β βββ usecase/ -> Use cases (business logic)
β
βββ persistence/ π Data layer (Actual implementations)
β βββ entity/ -> Database entities (Room)
β βββ repository/ -> Concrete repository implementations
β βββ remote/ -> APIs, DTOs, Retrofit
β βββ local/ -> DAOs, DataStore, SharedPrefs
β
βββ di/ π Dependency Injection (Hilt/Koin)
β
βββ util/ π Helper functions, extensions, constants
β βββ Constants.kt -> Global constants
β βββ Extensions.kt
β
βββ core/ (optional) π Common layer, if multi-module
app/
βββ src/
βββ main/
βββ java/com/exemplo/app/
βββ presentation/ π Camada de apresentaΓ§Γ£o (UI)
β βββ components/ -> Composables reutilizΓ‘veis
β βββ screens/ -> Telas (cada uma com seu ViewModel)
β β βββ home/
β β βββ login/
β β βββ settings/
β βββ navigation/ -> Rotas, NavHost
β
βββ domain/ π Camada de domΓnio (regras de negΓ³cio)
β βββ model/ -> Entidades de domΓnio
β βββ repository/ -> Interfaces (contratos dos repositΓ³rios)
β βββ usecase/ -> Casos de uso (lΓ³gica de negΓ³cio)
β
βββ persistence/ π Camada de dados (implementaΓ§Γ΅es reais)
β βββ entity/ -> Entidades do banco de dados (Room)
β βββ repository/ -> ImplementaΓ§Γ΅es concretas dos repositΓ³rios
β βββ remote/ -> APIs, DTOs, Retrofit
β βββ local/ -> DAOs, DataStore, SharedPrefs
β
βββ di/ π InjeΓ§Γ£o de dependΓͺncia (Hilt/Koin)
β
βββ util/ π FunΓ§Γ΅es de ajuda, extensΓ΅es, constants
β βββ Constants.kt -> Constantes globais
β βββ Extensions.kt
β
βββ core/ (opcional) π Camada comum, se for multi-mΓ³dulo