Loading repository dataβ¦
Loading repository dataβ¦
eslamfaisal / repository
π° Production-ready Android app demonstrating Clean Architecture with multi-module setup. Built with Jetpack Compose, Material 3, MVI pattern, Hilt DI, Retrofit, Room, and Kotlin Coroutines. Perfect for learning enterprise Android development best practices.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Enterprise Android Clean Architecture Sample
A production-ready, scalable Android application showcasing modern development practices, clean architecture, and best-in-class libraries.
Features β’ Architecture β’ Tech Stack β’ Getting Started β’ Documentation
| ποΈ Clean Architecture | π± Modern UI | π§ͺ Testable | π Secure |
|---|---|---|---|
| Multi-module setup with clear separation of concerns | Jetpack Compose with Material 3 Design | Comprehensive unit & UI tests | NDK/C++ API keys + Encrypted storage |
| Login | Home | Recipe Details |
|---|---|---|
| π Secure Authentication | π Recipe Discovery | π Step-by-Step Guide |
BakingApp follows Clean Architecture principles combined with MVI (Model-View-Intent) pattern, ensuring:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PRESENTATION LAYER β
β ββββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββββββββββ β
β β Screens β β ViewModels β β UI State β β
β β (Compose) ββββββ (MVI) βββββΊβ (Immutable) β β
β β β β β β β β
β β β’ LoginScreen β β β’ LoginVM β β β’ LoginUiState β β
β β β’ HomeScreen β β β’ HomeVM β β β’ HomeUiState β β
β β β’ DetailScreenβ β β’ DetailVM β β β’ RecipeDetailUiState β β
β ββββββββββββββββββ βββββββββ¬βββββββββ βββββββββββββββββββββββββββ β
β β β
ββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ
β invoke()
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DOMAIN LAYER β
β ββββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββββββββββ β
β β Use Cases β β Entities β β Repository Interfaces β β
β β β β β β β β
β β β’ LoginUseCase β β β’ Recipe β β β’ RecipeRepository β β
β β β’ GetRecipes β β β’ Ingredient β β β’ AuthRepository β β
β β β’ ToggleFav β β β’ Step β β β β
β β β’ SearchRecipesβ β β’ LoginResult β β β β
β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββ¬βββββββββββββ β
β β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββ
β implements
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA LAYER β
β ββββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββββββββββ β
β β Repository β β Data Sources β β Mappers β β
β β Impl β β β β β β
β β ββββββ β’ RecipesApi β β β’ RecipeEntity β Recipe β β
β β β’ RecipeRepo β β β’ RecipeDao β β β’ RecipeDto β Recipe β β
β β β’ AuthRepo β β β’ AuthApi β β β β
β ββββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββ ββββββββββββββββ βββββββββββββ ββββββββββββββ ββββββββββββββ
β User ββββββΊβ Composable ββββββΊβ ViewModel ββββββΊβ Use Case ββββββΊβ Repository β
β Action β β Screen β β β β β β β
ββββββββββββ ββββββββββββββββ βββββββ¬ββββββ ββββββββββββββ ββββββββ¬ββββββ
β β
β StateFlow β
β βΌ
βββββββΌββββββ ββββββββββββββββ
β UI State βββββββββββββββββββββββββββ Data Source β
β (Updated) β Result<T> β (API/Room) β
βββββββββββββ ββββββββββββββββ
The project follows a feature-based modularization strategy:
BakingApp/
β
βββ π± app/ # Application entry point
β βββ BakingApplication.kt # Hilt Application class
β βββ MainActivity.kt # Single Activity
β βββ navigation/
β βββ BakingNavHost.kt # Navigation graph
β
βββ π§± core/ # Shared core modules
β βββ common/ # Base classes & utilities
β β βββ base/
β β β βββ BaseUseCase.kt # UseCase, FlowUseCase, NoParamUseCase
β β βββ result/
β β β βββ Result.kt # Result<T> sealed class
β β βββ dispatcher/
β β β βββ DispatcherModule.kt # Coroutine dispatchers
β β βββ extensions/
β β βββ FlowExtensions.kt # Flow utility extensions
β β
β βββ network/ # Networking layer
β β βββ api/
β β β βββ AuthApi.kt # Authentication endpoints
β β β βββ RecipesApi.kt # Recipe endpoints
β β βββ interceptor/
β β β βββ AuthInterceptor.kt # Token injection
β β β βββ NetworkDelayInterceptor.kt
β β βββ model/
β β β βββ RecipeDto.kt # Data Transfer Objects
β β β βββ NetworkResponse.kt # API response wrapper
β β βββ di/
β β βββ NetworkModule.kt # Hilt network providers
β β
β βββ database/ # Local persistence
β β βββ BakingDatabase.kt # Room database
β β βββ dao/
β β β βββ RecipeDao.kt # Recipe data access
β β βββ entity/
β β β βββ RecipeEntity.kt # Room entities
β β βββ di/
β β βββ DatabaseModule.kt # Hilt database providers
β β
β βββ security/ # Security utilities
β β βββ cpp/ # Native code (NDK)
β β β βββ CMakeLists.txt # CMake build config
β β β βββ native-keys.cpp # XOR-obfuscated keys
β β βββ ApiKeyProvider.kt # Key provider interface
β β βββ NativeKeyProvider.kt # JNI bridge to native
β β βββ EncryptedPreferencesManager.kt
β β βββ SecureTokenManager.kt # Token management
β β βββ di/
β β βββ SecurityModule.kt
β β
β βββ ui/ # Shared UI components
β βββ components/
β β βββ BakingButton.kt
β β βββ BakingTextField.kt
β β βββ ErrorView.kt
β β βββ LoadingIndicator.kt
β β βββ RecipeCard.kt
β βββ theme/
β βββ Color.kt
β βββ Theme.kt
β βββ Type.kt
β
βββ π¨ features/ # Feature modules
β βββ login/ # Authentication feature
β β βββ data/
β β β βββ repository/
β β β βββ AuthRepositoryImpl.kt
β β βββ domain/
β β β βββ model/
β β β β βββ LoginResult.kt
β β β βββ repository/
β β β β βββ AuthRepository.kt
β β β βββ usecase/
β β β βββ LoginUseCase.kt
β β β βββ ValidateEmailUseCase.kt
β β β βββ ValidatePasswordUseCase.kt
β β βββ presentation/
β β β βββ LoginScreen.kt
β β β βββ LoginViewModel.kt
β β β βββ LoginUiState.kt
β β βββ di/
β β βββ LoginModule.kt
β β
β βββ home/ # Recipe list feature
β β βββ data/
β β β βββ datasource/
β β β β βββ FakeRecipeDataSource.kt
β β β βββ mapper/
β β β β βββ RecipeMapper.kt
β β β βββ repository/
β β β βββ RecipeRepositoryImpl.kt
β β βββ domain/
β β β βββ model/
β β β β βββ Recipe.kt
β β β βββ repository/
β β β β βββ RecipeRepository.kt
β β β βββ usecase/
β β β βββ GetRecipesUseCase.kt
β β β βββ SearchRecipesUseCase.kt
β β β βββ ToggleFavoriteUseCase.kt
β β βββ presentation/
β β β βββ HomeScreen.kt
β β β βββ HomeViewModel.kt
β β β βββ HomeUiState.kt
β β βββ di/
β β βββ HomeModule.kt
β β
β βββ recipe-details/ # Recipe detail feature
β βββ presentation/
β βββ RecipeDetailScreen.kt
β βββ RecipeDetailViewModel.kt
β βββ RecipeDetailUiState.kt
β
βββ π docs/ # Documentation
βββ architecture.md
βββ modules.md
βββ networking.md
βββ security.md
βββ testing.md
βββ performance.md
βββ compose_guidelines.md
βββββββββββ
β app β
ββββββ¬βββββ
β
ββββββββββββββββΌβββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββ βββββββββββββ βββββββββββββββββ
β login β β home β β recipe-details β
βββββββ¬ββββββ βββββββ¬ββββββ βββββββββ¬ββββββββ
β β β
ββββββββββββββββ΄βββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββ βββββββββββββ ββββββββββββ
β core:ui β βcore:commonβ βcore:networkβ
ββββββββββββ βββββββββββββ ββββββββββββ
β
βΌ