Skip to content

Uwi0/Oakane

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Oakane - Cross-Platform Finance App

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.

๐Ÿš€ Features

  • 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.

๐Ÿ—๏ธ Project Structure

โ”œโ”€โ”€ 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

๐Ÿ“‹ Project Requirements

Android

  • Compile SDK: 35
  • Minimum SDK: 26
  • Target SDK: 35
  • Java Version: 17

iOS

  • Minimum Deployment Target: iOS 17.6
  • Xcode Version: 16.2 (Recommended)
  • Swift Version: 6.0.3

Tech Stack

Languages & Frameworks

  • 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.

Android

  • 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.

iOS

  • SwiftUI - Native UI framework.
  • Skie - Seamlessly transform Kotlin sealed classes into Swift enums.
  • KMP-NativeCoroutines - Bridging Kotlin Coroutines to Swift Concurrency.

Build & Dependency Management

  • 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.

Testing

  • Kotest - Test framework for Kotlin Multiplatform.
  • JUnit - Standard testing framework.
  • Espresso - UI testing for Android.

Debugging & Monitoring

  • Kermit - Logging for KMP.
  • LeakCanary - Memory leak detection.
  • Firebase Crashlytics - Error tracking.

Platform Compatibility

  • Android: Min SDK 26, Target SDK 35
  • iOS: Deployment target 17.6, Swift 6.0.3, Xcode 16.2

๐Ÿ“– How to Run

download google services.json for android

  1. Go to Firebase Console.
  2. Click Add App โ†’ Select Android
  3. Enter the package name:
com.kakapo.oakane.demo
  1. Generate SHA-1 using:
./gradlew signingReport
  1. Paste the SHA-1 in Firebase.
  2. Download the google-services.json file.
  3. Place the file inside:
composeApp/src/androidMain/

Ensure the file is present before building the project, as it will be automatically detected.

Android

  1. Clone the repository:
    git clone https://github.com/yourusername/oakane.git
    cd oakane
  2. Open in Android Studio
  3. Sync Gradle and run the project on an emulator or physical device

iOS

  1. Clone the repository
  2. Open iosApp/iosApp.xcodeproj in Xcode
  3. Run on a simulator or physical device

๐Ÿ”ฎ Roadmap

  • Transaction Location - Log expenses with location metadata
  • Reminders - Set alerts for recurring expenses

๐Ÿ“Œ Useful Links


โš’๏ธ This repository is my playground for experimenting with KMP. Expect bugs and ongoing improvements!

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy