Overview
An in-depth implementation of the MACH banking application, showcasing modern Android development practices, clean architecture principles, and robust state management. This project serves as a practical exploration of financial application architecture and UI/UX patterns.
π οΈ Technical Stack
-
UI & Composition
- Jetpack Compose with Material 3 design system
- Accompanist System UI Controller for seamless system bar handling
- Custom animations and transitions
- Responsive layouts for various screen sizes
-
Architecture & Design Patterns
- Clean Architecture with clear separation of concerns
- MVVM pattern for presentation layer
- Dependency Injection using Dagger Hilt
- Navigation Component for screen management
-
Network & Data Layer
- Retrofit2 with OkHttp3 for API communication
- Gson converter for JSON parsing
- Kotlin Coroutines for asynchronous operations
π§ Project Structure
π mach
βββ π MachApp.kt
βββ π MainActivity.kt
βββ π SharedViewModel.kt
βββ π core
β βββ π di
β β βββ π NetworkModule.kt
β βββ π navigation
β βββ π BottomNavigationMenu.kt
β βββ π BottonSheetController.kt
β βββ π NavComposable.kt
β βββ π NavigationController.kt
βββ π feature
β βββ π inicio
β β βββ π data
β β β βββ π mapper
β β β β βββ π UserDataDtoMapper.kt
β β β βββ π remote
β β β β βββ π api
β β β β β βββ π UserDataApi.kt
β β β β βββ π dto
β β β β βββ π UserDataDto.kt
β β β βββ π repository
β β β βββ π UserDataRepositoryImpl.kt
β β βββ π di
β β β βββ π InicioModule.kt
β β βββ π domain
β β β βββ π model
β β β β βββ π UserData.kt
β β β βββ π repository
β β β β βββ π UserDataRepository.kt
β β β βββ π usecase
β β β βββ π GetUserDataUseCase.kt
β β βββ π ui
β β βββ π InicioScreen.kt
β β βββ π InicioViewModel.kt
β βββ π inversiones
β β βββ π ui
β β βββ π InversionesScreen.kt
β βββ π pin
β β βββ π ui
β β βββ π PinScreen.kt
β βββ π splash
β β βββ π ui
β β βββ π SplashScreen.kt
β βββ π tarjetas
β β βββ π ui
β β βββ π TarjetasScreen.kt
β βββ π transferencia
β β βββ π ui
β β βββ π TransferenciaScreen.kt
β βββ π voucher
β βββ π ui
β βββ π VoucherScreen.kt
βββ π splash
β βββ π SplashActivity.kt
β βββ π navigation
β β βββ π NavComposable.kt
β β βββ π NavigationController.kt
β βββ π ui
β βββ π theme
β βββ π Color.kt
β βββ π Theme.kt
β βββ π Type.kt
βββ π ui
βββ π composable
β βββ π AccountCard.kt
β βββ π BottonSheet.kt
β βββ π CardAccount.kt
β βββ π CustomLista.kt
β βββ π EvolveAccount.kt
β βββ π HomeCardSection.kt
β βββ π MeetMachCard.kt
β βββ π OptionInvestCard.kt
β βββ π RectangleCard.kt
β βββ π ScrollAccounts.kt
β βββ π ScrollImages.kt
β βββ π ScrollInvest.kt
β βββ π ShowMore.kt
β βββ π SquareCard.kt
β βββ π Topbar.kt
β βββ π WhatToDoTodaySection.kt
βββ π theme
βββ π Color.kt
βββ π Theme.kt
βββ π Type.kt
β Key Features
- Comprehensive banking dashboard implementation
- Transaction history visualization
- Real-time balance updates
- Smooth transitions and micro-interactions
- Error handling and loading states
ποΈ Architecture Overview
The project follows Clean Architecture principles with three main layers:
- Presentation Layer: MVVM pattern with Compose UI and ViewModels
- Domain Layer: Business logic and use cases
- Data Layer: Repository pattern with remote data sources
π± UI Showcase








π Technical Highlights
- Implementation of reactive UI patterns with Kotlin Flows
- Custom composables for reusable banking components
- Secure local data management
- Efficient state management using ViewModels
- Integration of material design components
- Custom theming system for consistent banking UI
π Key Learnings
- Implementation of Clean Architecture in a banking context
- State management patterns for financial applications
- Performance optimization techniques for complex UIs
- Implementation of modern Android development practices
π οΈ Development Practices
- Modular architecture for better scalability
- Code quality maintenance with static analysis tools