pennywise

Pennywise — Smart Personal Finance Tracker

A comprehensive personal finance and budget tracking app built with Flutter for Android and iOS.

Features

Core Features

Predefined Categories

Expense Categories

Income Categories

Payment Methods

Technical Architecture

Design Patterns

Database

State Management

Project Structure

lib/
├── constants/
│   └── app_constants.dart              # App constants, colors, categories
├── models/
│   └── transaction.dart                # Transaction data model
├── providers/
│   ├── transaction_provider.dart       # Transaction state management
│   ├── settings_provider.dart          # App settings state (theme, currency)
│   └── premium_provider.dart           # Premium (ad-free) state management
├── screens/
│   ├── dashboard_screen.dart           # Main dashboard
│   ├── transaction_history_screen.dart # Monthly transaction history
│   └── settings_screen.dart            # App settings
├── services/
│   ├── database_service.dart           # SQLite operations
│   ├── csv_service.dart                # CSV import/export functionality
│   ├── ad_service.dart                 # Google AdMob integration
│   └── purchase_service.dart           # In-app purchase (Remove Ads)
├── utils/
│   └── helpers.dart                    # Utility functions
├── widgets/
│   ├── add_transaction_screen.dart     # Add transaction form
│   ├── edit_transaction_screen.dart    # Edit/delete transaction form
│   ├── transaction_list.dart           # Transaction list widget
│   └── ad_banner_widget.dart           # Banner ad widget
└── main.dart                           # App entry point

Getting Started

Prerequisites

Installation

  1. Clone the repository:
    git clone <repository-url>
    cd pennywise
    
  2. Install dependencies:
    flutter pub get
    
  3. (iOS only) Install CocoaPods dependencies:
    cd ios && pod install && cd ..
    
  4. Run the app:
    flutter run
    

Usage

Adding Transactions

  1. Tap + Expense or + Income quick-add buttons on the dashboard
  2. Select a category from the grid
  3. Enter amount and optional description
  4. Choose payment method and date
  5. Tap Save Transaction

Viewing Data

Importing Data

  1. Tap the menu icon in the app bar and select Import from CSV
  2. Select a CSV file from your device
  3. All transactions will be imported and the dashboard will refresh

Exporting Data

  1. Tap the menu icon in the app bar
  2. Choose Export Current Month or Export All Data
  3. CSV file will be saved to device storage (Documents on iOS, Downloads on Android)

Dependencies

Privacy Policy

See our Privacy Policy for details on data handling.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

See LICENSE for the full license text and COMMERCIAL.md for commercial licensing enquiries.

Built on Pennywise — Copyright (c) 2024–2026 Hamza Awan

Support

For support and questions, please open an issue in the repository.