Oakane is a finance management app built with Kotlin Multiplatform (KMP), leveraging Jetpack Compose for Android and SwiftUI for iOS. The name "Oakane" is a combination of "oak" (symbolizing growth) and "okane" (meaning money in Japanese). This project explores KMP for seamless cross-platform development.
- Expense Tracking - Log and categorize your expenses.
- Custom Category - Create your custom Category.
- Monthly budgetg - Add limits how much you can spend.
- Category Limit - Add limits how much you can spend in every caetgory.
- Exclude from Budget - Option to exclude unexpected expenses from the monthly budget.
- Goalt Set financial goals and track your progress toward saving or spending targets..
- Wallet Management - Create and manage multiple wallets.
- Wallet Logs - Log every transctions in your wallet.
- Reportss - Get insights into your spending habits with detailed charts and analytics. Export reports as CSV for further analysis.
- Dark Mode – A sleek, eye-friendly dark theme for better usability in low-light environments.
- Currency Selection – Choose your preferred currency for a personalized finance tracking experience.
- Recurring Monthly Budget – Automatically set and reset your spending limits each month.
- Recurring Category Limit – Maintain control over specific spending categories with automatic monthly limits.
- Backup & Import Data – Securely back up your financial data and restore it when needed.
- Cross-Platform Support - Android and iOS versions share the same features.
├── LICENSE
├── README.md
├── build
│ ├── kotlin
│ ├── reports
│ └── tmp
├── build-logic
│ ├── convention
│ ├── gradle.properties
│ └── settings.gradle.kts
├── build.gradle.kts
├── composeApp
│ ├── build
│ ├── build.gradle.kts
│ ├── google-services.json
│ ├── prod
│ ├── proguard-rules.pro
│ ├── release
│ └── src
├── core
│ ├── common
│ ├── data
│ ├── database
│ ├── domain
│ ├── model
│ └── preference
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── iosApp
│ ├── Configuration
│ ├── iosApp
│ ├── iosApp.xcodeproj
│ └── oakane.xcodeproj
├── local.properties
├── settings.gradle.kts
└── shared
├── build
├── build.gradle.kts
└── src
- Compile SDK: 35
- Minimum SDK: 26
- Target SDK: 35
- Java Version: 17
- Minimum Deployment Target: iOS 17.6
- Xcode Version: 16.2 (Recommended)
- Swift Version: 6.0.3
- Kotlin Multiplatform (KMP) - Shared business logic across Android and iOS.
- Jetpack Compose - Declarative UI for Android.
- SwiftUI - Declarative UI for iOS.
- SQLDelight - Kotlin Multiplatform database with type-safe queries.
- Kotlin Coroutines - Asynchronous programming.
- Kotlin Serialization - JSON serialization for Kotlin.
- Koin - Dependency Injection framework.
- Accompanist - Jetpack Compose utilities.
- AndroidX CameraX - Camera support.
- Datastore Preferences - Lightweight data storage.
- Material Design Components - Google's Material UI.
- Splash Screen API - Native splash screen.
- SwiftUI - Native UI framework.
- Skie - Seamlessly transform Kotlin sealed classes into Swift enums.
- KMP-NativeCoroutines - Bridging Kotlin Coroutines to Swift Concurrency.
- Gradle (Kotlin DSL) - Build system.
- KSP (Kotlin Symbol Processing) - Annotation processing.
- Firebase Crashlytics - Crash reporting.
- Google Services Plugin - Firebase integration.
- Dependency Analysis Plugin - Detect unused dependencies.
- Kotest - Test framework for Kotlin Multiplatform.
- JUnit - Standard testing framework.
- Espresso - UI testing for Android.
- Kermit - Logging for KMP.
- LeakCanary - Memory leak detection.
- Firebase Crashlytics - Error tracking.
- Android: Min SDK 26, Target SDK 35
- iOS: Deployment target 17.6, Swift 6.0.3, Xcode 16.2
- Clone the repository:
git clone https://github.com/yourusername/oakane.git cd oakane
- Open in Android Studio
- Sync Gradle and run the project on an emulator or physical device
- Clone the repository
- Open
iosApp/iosApp.xcodeproj
in Xcode - Run on a simulator or physical device
- Transaction Location - Log expenses with location metadata
- Reminders - Set alerts for recurring expenses
- Google Play Store: Download Here
- GitHub Repository: Check It Out
- Figma Design: View the Prototype
- Kotlin Multiplatform Docs: Read More
⚒️ This repository is my playground for experimenting with KMP. Expect bugs and ongoing improvements!