Skip to content

Lyba97/home_ledger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Ledger (Expense Split) 🏠

Home Ledger is a modern, responsive Flutter application designed to make managing and splitting household finances effortless. It calculates net income after savings, and dynamically splits bills and groceries among household members, accounting for unequal "grocery head" consumption.

🌟 Features

  • Dynamic Income Tracking: Calculates total disposable income after savings and optional miscellaneous donations.
  • Fair Splits: Automatically splits Bills and Groceries according to member counts. Calculates extra "grocery heads" seamlessly (e.g., if there are 2 bill payers but 3 grocery eaters, it assigns the extra grocery cost logically).
  • Live Summary: Instantly computes a per-person financial breakdown.
  • Local Persistence: Data is automatically saved to your device using shared_preferences.
  • High Performance: Implements state debouncing and targeted UI rebuilding (via Riverpod) ensuring buttery-smooth 120fps text input.
  • Share Capability: Easily copy or share the final per-person split breakdown to WhatsApp or iMessage.

🛠 Tech Stack

  • Framework: Flutter (Material 3)
  • State Management: flutter_riverpod 3.x (using modern Notifier and .select())
  • Data Persistence: shared_preferences
  • Fonts & UI: google_fonts (DM Mono, Syne) and a custom dark-mode aesthetic.

🏗 Project Architecture (Firebase-Ready)

The app is built using a Feature-First Architecture to ensure it can easily scale from a local offline app to a cloud-synced Firebase app.

lib/
├── core/
│   ├── theme/             # Colors, typography, theme data
│   ├── utils/             # Formatters, helpers
│   └── widgets/           # Reusable UI components (Custom Cards)
├── models/                # AppState, ExpenseItem models
├── repositories/          # Interface for data storage (Local_Storage_Repository)
├── features/
│   ├── home/              # Main UI, Riverpod Providers, and specific Widgets
└── main.dart              # Entry point

Important Dev Notes:

  • To add Firebase later, we only need to write a FirebaseRepository and swap it out in storageRepositoryProvider. The UI and State Notifiers will require zero changes.
  • Typing performance is preserved by decoupling the Riverpod Watchers. List inputs manage their state locally and debounce updates to the global state.

🚀 Setup & Installation

1. Prerequisites

  • Flutter SDK installed.
  • iOS Simulator or Android Emulator.

2. Getting Started

Clone the repository and install the dependencies:

cd home_ledger
flutter pub get

3. Running the App

To run the app in debug mode on your simulator/emulator:

flutter run

📦 Building an APK (Android)

To build a highly optimized Release APK to share with Android users:

For Apple Silicon (M1/M2/M3) Mac Users: Because building for the old 32-bit Android architecture (android-arm) requires Rosetta 2 on Apple Silicon, you might encounter a gen_snapshot error. To bypass this and build purely for modern 64-bit phones, run:

flutter build apk --release --target-platform android-arm64

The generated APK will be available at: build/app/outputs/flutter-apk/app-release.apk

About

A modern, responsive Flutter application designed to make managing and splitting household finances effortless.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors