Offline-first personal finance and social payments — built with Flutter.
Author: Devil1716
Kosh tracks a private ledger and splits bills with friends, then starts UPI / Google Pay with amounts that come only from a deterministic settlement engine.
This is not a bank. Client UPI responses are not treated as proof of payment. Demo mode uses MockPaymentService. Automatic importing uses a consent-driven FinancialDataProvider abstraction — Kosh does not access Google Pay’s private application database.
- Offline ledger: months, search, swipe-delete, undo, budgets, insights, goals, forecasts
- Firebase Auth: email, Google Sign-In, password reset, guest mode
- Friends, groups, equal / exact / percentage / item splits (paise)
- Deterministic balances and min-cash-flow settlements
- Settle up with Mock / Google Pay / other UPI verification states
- Connect account (demo AA) → import pipeline → categorizer → ledger
- Charcoal + lime UI (
#090A0A/#D7FF3F)
git clone https://github.com/Devil1716/kosh.git
cd kosh
flutter pub get
flutter analyze
flutter test
flutter run -d web-server --web-hostname 127.0.0.1 --web-port 8099Android for real UPI intents; web/desktop use the demo payment path.
- Launch Kosh → welcome / login → Continue as Guest (or create account)
- Dashboard → social balances + ledger
- People → Goa Trip
- Split bill ₹2,400 dinner, four people, Equal → ₹600 each
- Settle Up → Demo Google Pay → verifying → confirmed
- Return to dashboard
UI → WalletStore + SocialStore + AuthController
→ Local JSON (UID-scoped) ↔ optional Firestore
→ FinanceEngine · SplitEngine · BalanceEngine · PaymentService
→ FinancialDataProvider → ImportPipeline
Firebase project: kosh-pocket-app. Guest stays local. Signed-in users sync under users/{uid}/….
Tagged versions (v*) trigger GitHub Actions to run tests and publish a GitHub Release with build notes.
git tag v2.0.0
git push origin v2.0.0Or run Actions → Release → Run workflow and enter a tag (e.g. v2.0.0).
flutter test
flutter analyze- Google Pay initiation is supported where the OS allows; opening GPay ≠ paid
- Server/PSP verification is required before treating payments as settled in production
- Account Aggregator production credentials are not configured (mock provider for demo)
- Deploy
firestore.rulesfrom this repo after review
MIT — see LICENSE.
Maintained by Devil1716.