Play Store branch: App ships as Mizafi (
com.saadproductlabs.mizafi) by Saad Product Labs. This GitHub repo name stays FlowFi.
A fast, Material 3 personal finance app that turns data into decisions — track spending, get behavioral guidance, and progress toward savings goals. Built with Kotlin, Jetpack Compose, Room, and MVVM.
Also available as flowfidemo.webm (higher quality)
Dashboard · Add / Edit · View All
- Transaction tracking — Record income and expenses with amount, category, date, and notes
- Edit transactions — Tap any item on the dashboard or list to update it
- Delete with undo — Swipe to delete on the list; tap Undo on the snackbar to restore
- List filters — Narrow the full history by month and category
- Financial dashboard — Monthly balance, income, and expense totals
- Transaction history — Chronological list with dates
- Insight engine — Behavioral guidance such as week-over-week food spending, spending vs your monthly average, and savings rate trends
- Category analytics — Monthly expense breakdown with percentage bars (Food, Shopping, Bills, and more)
- Savings goals — Create goals (Emergency fund, Travel, etc.), add funds, and track progress visually
- Insights hub — Open from the dashboard Guidance card for charts, insights, and goals in one place
- Material 3 UI — Dynamic color, light/dark themes, edge-to-edge layout
- Dashboard — See this month’s balance and a preview of your top insight; tap Guidance for the full Insights hub
- Add / edit — Use + or tap a transaction to record or update spending
- View all — Browse history, filter by month or category, swipe to delete (with Undo)
- Insights — Review guidance, category charts, and savings goal progress
Requirements: Android Studio Ladybug or newer, JDK 17+, Android SDK 36
git clone https://github.com/saadkhalidkhan/FlowFi.git
cd FlowFi
./gradlew :app:assembleDebugInstall on a device or emulator:
./gradlew :app:installDebug
adb shell am start -n com.saadproductlabs.mizafi/.MainActivityimport com.saadproductlabs.mizafi.data.database.AppDatabase
import com.saadproductlabs.mizafi.data.entity.TransactionEntity
import com.saadproductlabs.mizafi.data.entity.TransactionType
import com.saadproductlabs.mizafi.data.repository.TransactionRepositoryImpl
val repository = TransactionRepositoryImpl(
AppDatabase.getDatabase(context).transactionDao()
)
repository.insertTransaction(
TransactionEntity(
amount = 42.50,
category = "Food",
date = System.currentTimeMillis(),
type = TransactionType.EXPENSE,
note = "Lunch"
)
)import com.saadproductlabs.mizafi.data.entity.TransactionType
import kotlinx.coroutines.flow.map
repository.getAllTransactions()
.map { list ->
val income = list.filter { it.type == TransactionType.INCOME }.sumOf { it.amount }
val expenses = list.filter { it.type == TransactionType.EXPENSE }.sumOf { it.amount }
income - expenses // balance
}import com.saadproductlabs.mizafi.data.entity.SavingsGoalEntity
savingsGoalRepository.insertGoal(
SavingsGoalEntity(
name = "Emergency fund",
targetAmount = 5000.0,
currentAmount = 250.0
)
)import com.saadproductlabs.mizafi.domain.InsightEngine
val insights = InsightEngine.generate(transactions)
insights.forEach { println(it.message) }class MizafiApplication : Application() {
val database by lazy { AppDatabase.getDatabase(this) }
val repository by lazy { TransactionRepositoryImpl(database.transactionDao()) }
val savingsGoalRepository by lazy {
SavingsGoalRepositoryImpl(database.savingsGoalDao())
}
}API reference is generated with Dokka:
./gradlew :app:dokkaGeneratePublicationHtmlOutput: app/build/dokka/html/
Published docs (GitHub Pages): https://saadkhalidkhan.github.io/FlowFi/
First-time setup: enable Pages under Settings → Pages → Build and deployment → Source: GitHub Actions, or run
gh api -X POST repos/saadkhalidkhan/FlowFi/pages -f build_type=workflow
FlowFi/
├── app/
│ └── src/main/java/com/saadproductlabs/mizafi/
│ ├── data/ # Room entities, DAOs, repositories
│ ├── domain/ # InsightEngine, CategoryAnalytics
│ ├── ui/ # Compose screens, theme, navigation
│ └── viewmodel/ # MVVM state and actions
├── docs/
│ ├── images/ # Screenshots
│ └── media/ # Demo video
└── .github/workflows/ # CI and docs
| Layer | Technology |
|---|---|
| UI | Jetpack Compose, Material 3 |
| Architecture | MVVM, Repository pattern |
| Persistence | Room (KSP) |
| Async | Kotlin Coroutines, StateFlow |
| Navigation | Navigation Compose |
./gradlew testDebugUnitTest # Unit tests
./gradlew :app:assembleDebug # Debug APKThis project is licensed under the MIT License.
Copyright (c) 2026 Saad Khalid Khan



