MoneyFlow
A money management Android and iOS app wrote with Kotlin Multiplatform, Jetpack Compose and Swift UI.
Coming soon: Desktop App (with Compose for Desktop).
MoneyFlow comes also in dark 🌃:
Features roadmap
🚧 This project is a work in progress, some features are missing and they will arrive in the future.
- ✅ Transaction Entry
- 🏗 Transaction List
- 💭 Edit Transaction
- 💭 Add custom category
- 💭 Recap screen with plots
- 💭 Budgeting feature
- ✅ Database import and export
- ✅ Sync data with Dropbox
- 💭 Import from CSV
- 💭 Change currency
- 🏗 Lock view with biometrics
Legend:
- ✅ Implemented
- 💭 Not yet implemented, still in my mind!
- 🏗 Working on it
How to build:
In order to build the iOS project, you will need to add a Config.xcconfig
file inside the iosApp/Assets folder, with the content of the Config.xcconfig.template file.
Dropbox sync:
If you want to run the Dropbox sync, you need to create a Dropbox App here and get an API key. For iOS, you need to provide also the URL scheme and both need to be placed in the Config.xcconfig
file created above:
DROPBOX_URL_SCHEME=db-<your-api-key>
DROPBOX_API_KEY=<your-api-key>
On Android, you only need the API key, which must be included in the local.properties
in the root project dir:
dropbox.app_key=<your-api-key>
Further Readings
I wrote some articles about all the decisions and the thoughts that I’ve made to come up with an architecture for MoneyFlow.
- Improving shared architecture for a Kotlin Multiplatform, Jetpack Compose and SwiftUI app
- Choosing the right architecture for a [new] Kotlin Multiplatform, Jetpack Compose and SwiftUI app
License 📄
Copyright 2020-2022 Marco Gomiero
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.