{"id":51897529,"url":"https://github.com/saranzafar/expense-tracker-flutter-mobile-app","last_synced_at":"2026-07-26T12:02:09.251Z","repository":{"id":358307187,"uuid":"1240839573","full_name":"saranzafar/expense-tracker-flutter-mobile-app","owner":"saranzafar","description":"A clean, offline-first Android app for tracking expenses, income, and loans-given with optional private Google Drive backup. Built with Flutter, Drift, and Riverpod.","archived":false,"fork":false,"pushed_at":"2026-07-01T21:16:09.000Z","size":1213,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-01T22:14:20.953Z","etag":null,"topics":["androide","dart","drift","expense-tracker","finance-tracker","flutter","google-drive","google-drive-backup","loan-tracker","material-3","mobile-app","offline-first","open-source","personal-finance","riverpod","saranzafar","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saranzafar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T16:26:46.000Z","updated_at":"2026-07-01T21:15:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/saranzafar/expense-tracker-flutter-mobile-app","commit_stats":null,"previous_names":["saranzafar/expense-tracker-flutter-mobile-app"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/saranzafar/expense-tracker-flutter-mobile-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saranzafar%2Fexpense-tracker-flutter-mobile-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saranzafar%2Fexpense-tracker-flutter-mobile-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saranzafar%2Fexpense-tracker-flutter-mobile-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saranzafar%2Fexpense-tracker-flutter-mobile-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saranzafar","download_url":"https://codeload.github.com/saranzafar/expense-tracker-flutter-mobile-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saranzafar%2Fexpense-tracker-flutter-mobile-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35913015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-26T02:00:06.503Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["androide","dart","drift","expense-tracker","finance-tracker","flutter","google-drive","google-drive-backup","loan-tracker","material-3","mobile-app","offline-first","open-source","personal-finance","riverpod","saranzafar","sqlite"],"created_at":"2026-07-26T12:02:08.624Z","updated_at":"2026-07-26T12:02:09.245Z","avatar_url":"https://github.com/saranzafar.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Xpense Tracker\n\nA clean, offline-first personal finance app for Android. Track expenses, income, loans, and projects — with optional, private Google Drive backup.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-1.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-2.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-3.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-4.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-5.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-6.jpeg\" width=\"240\" /\u003e\n  \u003cimg src=\"assets/app-images/xpense-tracker-7.jpeg\" width=\"240\" /\u003e\n\u003c/p\u003e\n\n## Download\n\n**[⬇ Download v1.0.2 — latest release](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/tag/v1.0.2)**\n\n| APK | Architecture | Size |\n|-----|-------------|------|\n| [`app-arm64-v8a-release.apk`](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/download/v1.0.2/app-arm64-v8a-release.apk) | 64-bit · recommended (~95 % of devices) | 21.6 MB |\n| [`app-armeabi-v7a-release.apk`](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/download/v1.0.2/app-armeabi-v7a-release.apk) | 32-bit legacy | 19.1 MB |\n| [`app-x86_64-release.apk`](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/download/v1.0.2/app-x86_64-release.apk) | x86 / emulators | 23.2 MB |\n\nEnable **\"Install from unknown sources\"** on your device, then open the APK. The app works fully offline — Google Sign-In is optional and only needed for Drive backup.\n\n---\n\n## Features\n\n### Records\n- Four record types: **expense**, **income**, **loan given**, **loan taken**\n- Swipe to delete with confirmation dialog\n- Infinite-scroll pagination (50 records per page)\n- Category badges on each record tile\n\n### Categories\n- Shared category pool across income and expense records\n- Create, rename, and delete categories from Settings → Categories\n- Category-based filtering on the Records page\n\n### Home Dashboard\n- Balance card with hide/show toggle (persisted across restarts)\n- Monthly income and expense mini-stats\n- **Overview chart** — income vs expense line chart with 1W / 1M / 1Y and **custom date range** picker\n- Income, expense and net totals for the active chart period\n- Outstanding loans and borrowed-money summary card\n\n### Loans\n- Track money lent to others and money borrowed from others\n- Mark as returned / repaid; history preserved in Returned tab\n- Filter by date range\n\n### Projects\n- Create projects with name, description, start/end dates, total budget, advance payment, and category\n- Vertical payment timeline — tap to add further payments at any time\n- **Payments count as income** — the advance and every later payment flow straight into your available balance and appear in Recent Activity (recorded as income, tagged with the project name)\n- Filter by category and date range\n\n### Finance Summary\n- Records page shows income / expense / net totals for the current filter — updates live as filters change\n\n### Xpy — your money companion\n- A **fully code-drawn pixel cat** (no image assets) that lives on the home screen and is the face of the app\n- Mood tracks your month's net — happy when saving, worried when overspending, sleepy when there's nothing to track\n- Always alive: breathing, blinking, ear-twitches, yawns, tail-wags, hops and little walks\n- Reacts to your money (sparkles on income, a crumb on spend) and to you — **tap to pet** for red hearts and a rotating set of facial expressions\n\n### Design\n- Material 3, fully light and dark-mode aware, with tabular figures so numbers never jitter\n- Frosted glass floating nav bar with smooth decoupled pill animation\n- Soft card depth, uppercase overline section labels, staggered entrance + press feedback\n- Smooth motion throughout (fade, size, cross-fade transitions)\n- **Pull-to-refresh** on every main tab; 10 currencies, system / light / dark theme toggle\n\n### Backup\n- Optional Google Drive backup to a **private app-data folder** (invisible in Drive UI)\n- Backs up your **settings too** (currency, theme, display name) — a restore on a new device brings them all back\n- Auto-backup on app launch, on reconnect, and when the app is backgrounded (throttled)\n- **Conflict-safe** — auto-backup won't overwrite a newer cloud copy made on another device; it prompts you to restore instead\n- **Instant restore** — restored data shows immediately, no app restart needed\n- Surfaces failed backups so you're never left thinking you're protected when you aren't\n- Manual backup / restore from Settings → Backup\n\n---\n\n## Tech Stack\n\nFlutter · Riverpod 2 · Drift (SQLite) · fl_chart · `google_sign_in` · `googleapis` · Material 3\n\n---\n\n## Build from Source\n\n```bash\ngit clone https://github.com/saranzafar/expense-tracker-flutter-mobile-app.git\ncd expense-tracker-flutter-mobile-app\nflutter pub get\ndart run build_runner build --delete-conflicting-outputs\nflutter run\n```\n\nFor Google Drive backup and release-signing setup, see [SETUP.md](SETUP.md).\n\n---\n\n## Changelog\n\n### [v1.0.2](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/tag/v1.0.2)\n- **Meet Xpy** — a code-drawn pixel-cat companion on the home screen. Its mood follows your month's net (saving = happy, overspending = worried, quiet = sleepy); it breathes, blinks, looks around, twitches its ears, yawns, wags, hops and takes little walks on its own; reacts when your balance moves (sparkles for income, red hearts when you pet it); and cycles fun expressions (wink, ^_^, O_O, heart-eyes, star-eyes, tongue, dizzy) each time you tap it\n- Home chart: tap the **Income / Expense legend** to hide a line — the chart rescales to the remaining one\n- **Loans**: rich filter sheet (type · category · date range) + a Lent / Borrowed / Net summary board\n- **Projects**: Budget / Received / Remaining summary board that reacts to the active filter\n- **Pull-to-refresh** on Home, Records, Loans and Projects to force-reload if anything ever looks stale\n- **Reliable auto-backup**: fixed a launch race so it fires when Google sign-in lands, plus a debounced backup after any edit — the same backup the manual button runs, no extra permissions\n- Projects: advance and timeline payments now post as income — they raise your available balance and show in Recent Activity (editing/deleting a project payment stays in sync with its income record, and vice-versa)\n- Backup now includes app settings (currency, theme, display name, balance visibility) and restores them too\n- Restore is instant — no app restart required — and clears stale `-wal`/`-shm` files so a restored database can't be corrupted by a replayed write-ahead log\n- Auto-backup conflict guard: skips (and warns) instead of overwriting a cloud backup that's newer than this device's last upload\n- Failed auto-backups are surfaced on the Backup page (network errors treated as transient)\n- **UI polish**: tabular figures so numbers don't jitter while animating, softer card depth, uppercase overline section labels, staggered home entrance + press feedback, redesigned record tiles and day-group headers with daily net totals\n\n### [v1.0.1](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/tag/v1.0.1)\n- Custom date range picker on the home chart (daily/monthly buckets auto-selected)\n- Income / expense / net totals strip on both the home chart card and the Records page\n- Projects — budget tracking with vertical payment timeline and category + date filters\n- Loan taken record type with its own section in the Loans tab\n- Shared categories across all record types with Settings → Categories management\n- Infinite-scroll pagination on the Records page (50 records per page)\n- Dark mode: chip text, category badge, and card surface colour fixes\n- Balance card: dark-gray surface in dark mode (no longer inverts to white)\n- Floating nav bar: frosted glass in light mode (white bg, black border, soft shadow); smooth white border in dark mode; green active pill\n- Nav bar animation: pill travels directly from source to target tab (400 ms easeInOutCubic) — no intermediate tabs light up; swipe tracks the finger frame-perfectly\n\n### [v1.0.0](https://github.com/saranzafar/expense-tracker-flutter-mobile-app/releases/tag/v1.0.0)\n- Initial release: expense, income, loan-given records\n- Google Drive backup, 10 currencies, light/dark themes\n\n---\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n**Author:** Saran Zafar — [saranzafar.com](https://saranzafar.com) · [GitHub](https://github.com/saranzafar) · [LinkedIn](https://www.linkedin.com/in/saranzafar)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaranzafar%2Fexpense-tracker-flutter-mobile-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaranzafar%2Fexpense-tracker-flutter-mobile-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaranzafar%2Fexpense-tracker-flutter-mobile-app/lists"}