Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

415 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hisab

Hisab

Split expenses. Settle cleanly. Work offline.

Shared trips, household costs, and personal budgets — with balances that stay clear
when everyone chips in. Flutter · offline-first · optional Supabase sync.

Open the web app · Latest release · Documentation


What you get

Groups & people Trips, events, or household lists — with participants linked to real accounts when online.
Expenses Multi-currency amounts, categories, receipts, equal / parts / amounts splits, transfers.
Balance & settle-up Who owes whom, minimal settlement suggestions, record payments in one tap.
Profile Cross-group dashboard: net balances, KPIs, personal budgets, and an in-app activity feed (online).
Personal lists Solo budgets and spending (no split UI); optional Android notification scanner drafts.
Offline-first Full local SQLite. Sync, invites, and members when you connect Supabase.
Locales English and Arabic (RTL), themes, and subtle accent controls.

Modes

Mode Data Extra
Local-only (default) Device SQLite Everything except sign-in & cross-device sync
Online Supabase + local cache Invites, members, push, multi-device

Temporarily offline in online mode: expense writes queue and sync later. Invites and member admin need a connection.


Screenshots

Groups Expenses Balance People

Hisab demo

Settings Detail


Install

Web / PWA

Live at hisab.shenepoy.com (Firebase Hosting).
Install from the in-app banner when offered (Chromium Android uses the native install prompt; iPhone/iPad and other mobile browsers get Add-to-Home-Screen steps). On iOS, open the Home Screen app for web push. Works offline after install.

Android

Option
Obtainium (recommended) Add Hisab — tracks GitHub Releases
APK Download app-release.apk from latest release
Play Store Listing (WIP / when published)

Develop

Requirements: Flutter / Dart ^3.10

flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run

No --dart-definelocal-only mode.

Online (hosted Supabase):

flutter run \
  --dart-define=SUPABASE_URL=https://YOUR_PROJECT.supabase.co \
  --dart-define=SUPABASE_ANON_KEY=YOUR_ANON_KEY

Or use define files (gitignored): copy dart_defines_online.example.json / dart_defines_local.example.json, then launch with --dart-define-from-file=... (see .vscode/launch.json).

Web: generate WASM once if needed:

flutter pub run powersync:setup_web

Fuller local stack (Supabase + Edge Functions on LAN):

./scripts/local_test_env.sh up

Details: docs/LOCAL_TEST_ENV.md · docs/CONFIGURATION.md · docs/SUPABASE_SETUP.md

Quick fixes

Issue Fix
Stays local-only Pass both SUPABASE_URL and SUPABASE_ANON_KEY
SQLite crash on web flutter pub run powersync:setup_web
OAuth redirect fails Align Supabase Auth redirect URLs with your app / SITE_URL
Migration errors Stable network; migrations are idempotent — see Supabase setup docs

Architecture (short)

  • UI / state — Flutter, Riverpod 3 (codegen), GoRouter
  • Local DB — SQLite via PowerSync package (always on)
  • Cloud — Optional Supabase (Auth, Postgres, RPCs, Edge Functions)
  • Sync — Online writes to Supabase then cache; reads from SQLite; pending queue when offline
  • Domain — Groups, participants, expenses (cents), balances, settlements, invites

Deeper map: docs/CODEBASE.md


Docs

Guide
Documentation index All topics
Configuration --dart-define, online vs local
Supabase setup Project, migrations, auth, Edge Functions
Local test env Podman / CLI stack for device + Edge tests
Security Public-repo secret policy (what never to commit)
GitHub Actions secrets CI/CD secret names and sources
Tests Unit, widget, integration, online

Testing

flutter test

# Local stack + Edge smoke
./scripts/local_test_env.sh up
./scripts/local_test_env.sh test-edge

# Online integration (Docker/Podman + Supabase CLI)
./scripts/run_online_tests.sh

CI builds Android, deploys web, and runs tests on tags v* / manual dispatch (.github/workflows/release.yml). Secrets live in GitHub Actions — see docs/GITHUB_ACTIONS_SECRETS.md, not in this repo.


Contributing & secrets

This repository is public. Never commit real keys, service-account JSON, or filled define/env files. Use *_example templates and SECURITY.md.


License

CC BY-NC-SA 4.0 — share and adapt with attribution, non-commercial only, same license for derivatives.
Full text: LICENSE.

About

Group expense splitting and settle-up app. Built with Flutter

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages