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
- Go to Firebase Console.
- Click Add App โ Select Android
- Enter the package name:
com.kakapo.oakane.demo
- Generate SHA-1 using:
./gradlew signingReport
- Paste the SHA-1 in Firebase.
- Download the google-services.json file.
- Place the file inside:
composeApp/src/androidMain/
Ensure the file is present before building the project, as it will be automatically detected.
- 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!