-
Notifications
You must be signed in to change notification settings - Fork 0
Home
SplitTrip is a modular Android application designed for travelers to manage shared expenses efficiently. It focuses on Clean Architecture, modularity, and modern Android development practices.
To provide a seamless experience for creating expense groups, tracking spending in multiple currencies, and calculating debts/balances between users, with offline support and cloud synchronization.
The project follows Clean Architecture with MVVM and a multi-module structure:
-
:app: Entry point and dependency injection setup. -
:core: Shared components including: -
:core:design-system: UI components, themes, and theScreenUiProvidersystem. -
:core:common: Shared utilities and constants. -
:domain: Pure Kotlin business logic (Models, UseCases, Repository Interfaces). -
:data: Data layer implementation split into specific data sources: -
:data:firebase: Cloud synchronization and authentication. -
:data:local: Local persistence using Room. -
:data:remote: Network operations (e.g., currency exchange rates). -
:features: Feature-specific modules containing UI and presentation logic (e.g.,:features:expenses,:features:settings,:features:balances,:features:groups).
- Language: Kotlin
- UI: Jetpack Compose (Material 3)
- DI: Koin
- Async: Coroutines & Flow
- Navigation: Jetpack Navigation Compose
- Backend: Firebase (Auth, Firestore, Messaging) + Room (Local Cache)
- Network: Retrofit
- Subunits & Group Composition: How travel groups are composed of couples, families, and solo travelers — and how this affects contributions, withdrawals, expense splitting, and balance calculation.
- Add-Ons Architecture: How fees, tips, surcharges, and discounts are modeled, calculated, and stored — including the ON_TOP vs. INCLUDED modes, multi-currency support, and balance integration.
- Core Services & Components Catalog: Comprehensive reference of all reusable UI components, formatters, domain services, and preview utilities. Check here before creating new code to avoid duplication.
Check the sidebar to navigate through specific architectural concepts like our ScreenUiProvider system, Navigation strategies, and UI patterns.