Skip to content

yucezis/fintech-flutter-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ZenBudget β€” Mobile App

Flutter Dart iOS Android

Riverpod Hive Firebase Google Gemini ML Kit

GitHub Actions License

Personal budget management application built with Flutter 3.19+, supporting both iOS and Android.


πŸ’‘ Note: This repository contains the Flutter mobile client for ZenBudget. The application is powered by a robust .NET API built with Clean Architecture. If you are looking for the backend source code, please visit the ZenBudget Backend Repository.


Table of Contents


About

ZenBudget is a personal finance application that helps users track their income and expenses, analyze their spending habits, and reach their savings goals.

Supported Platforms:

  • 🍎 iOS 12+
  • πŸ€– Android 8.0+ (API 26+)

Highlights:

  • OCR-powered receipt/invoice scanning via camera (Google ML Kit)
  • Voice command support (Speech-to-Text)
  • Biometric authentication (Face ID / Touch ID / Fingerprint)
  • Interactive charts and spending analytics
  • Offline support (Hive local database)
  • Push notifications (FCM)
  • PDF report generation and sharing
  • 10 language support (TR, EN, DE, ES, FR, PT, IT, JA, KO, AR)

Tech Stack

Category Package Version
Framework Flutter SDK 3.19+
Language Dart 3.3+
State Management Riverpod 2.5.0
Networking Dio + Retrofit 5.4.0 / 4.1.0
Local Storage Hive 2.2.3
Secure Storage flutter_secure_storage 9.0.0
Charts fl_chart 0.66.0
OCR google_mlkit_text_recognition 0.11.0
Voice Recognition speech_to_text 6.6.0
Authentication firebase_auth 4.16.0
Biometrics local_auth 2.1.0
Notifications firebase_messaging 14.7.0
Calendar table_calendar 3.0.0
PDF pdf + printing 3.10.0 / 5.11.0
Error Tracking sentry_flutter 7.14.0
Analytics firebase_analytics 10.8.0

Getting Started

Prerequisites

Installation

# 1. Clone the repository
git clone https://github.com/your-username/zenbudget-mobile.git
cd zenbudget-mobile

# 2. Check Flutter version
flutter --version

# 3. Install dependencies
flutter pub get

# 4. Run code generation (Retrofit, JSON serialization, Riverpod)
dart run build_runner build --delete-conflicting-outputs

# 5. Add Firebase configuration files
# google-services.json       β†’ android/app/
# GoogleService-Info.plist   β†’ ios/Runner/

# 6. Run the app
flutter run

Flutter Setup Check

flutter doctor

Make sure all items show βœ… before proceeding.


Project Structure

lib/
β”œβ”€β”€ main.dart
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ constants/          # Constants, colors, theme
β”‚   β”œβ”€β”€ errors/             # Error classes
β”‚   β”œβ”€β”€ network/            # Dio client, interceptors
β”‚   β”œβ”€β”€ router/             # GoRouter navigation
β”‚   └── utils/              # Helper functions
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ auth/               # Authentication (login, register, biometric)
β”‚   β”œβ”€β”€ dashboard/          # Home screen, summary cards
β”‚   β”œβ”€β”€ transactions/       # Income/expense CRUD
β”‚   β”œβ”€β”€ categories/         # Category management
β”‚   β”œβ”€β”€ budgets/            # Budget plans
β”‚   β”œβ”€β”€ reports/            # Charts, PDF reports
β”‚   β”œβ”€β”€ ocr/                # Receipt scanning (ML Kit)
β”‚   β”œβ”€β”€ voice/              # Voice commands
β”‚   β”œβ”€β”€ ai_insights/        # Gemini AI recommendations
β”‚   β”œβ”€β”€ notifications/      # FCM + local notifications
β”‚   └── settings/           # Profile, language, theme settings
β”œβ”€β”€ l10n/
β”‚   └── *.arb               # Localization files for 10 languages
└── shared/
    β”œβ”€β”€ widgets/            # Shared widgets
    β”œβ”€β”€ models/             # Shared data models
    └── providers/          # Global Riverpod providers

assets/
β”œβ”€β”€ images/
β”œβ”€β”€ icons/
β”œβ”€β”€ animations/             # Lottie JSON files
└── fonts/

test/
β”œβ”€β”€ unit/
β”œβ”€β”€ widget/
└── integration/

Environment Variables

The project uses different configurations per environment. Create an env.dart file under lib/core/constants/:

// lib/core/constants/env.dart
class Env {
  static const String apiBaseUrl = String.fromEnvironment(
    'API_BASE_URL',
    defaultValue: 'https://localhost:7001/api/v1',
  );

  static const String geminiApiKey = String.fromEnvironment('GEMINI_API_KEY');

  static const String sentryDsn = String.fromEnvironment('SENTRY_DSN');
}

To run with environment variables:

# Development
flutter run --dart-define=API_BASE_URL=https://localhost:7001/api/v1

# Production
flutter run --dart-define=API_BASE_URL=https://api.zenbudget.app/api/v1 \
            --dart-define=SENTRY_DSN=https://your-sentry-dsn

Firebase configuration:

  • android/app/google-services.json β†’ Download from Firebase Console
  • ios/Runner/GoogleService-Info.plist β†’ Download from Firebase Console

Features

OCR Receipt Scanning

Automatically extracts the amount, date, and category from receipts and invoices by taking a photo with the camera or selecting from the gallery. Powered by Google ML Kit Text Recognition.

Voice Commands

Processes natural language commands such as "Add a grocery expense of 150 for today" and automatically creates the transaction.

Charts & Analytics

  • Monthly income/expense comparison (line chart)
  • Category-based spending breakdown (pie chart)
  • Budget goal progress bars
  • Calendar-view spending heatmap

AI Insights

Personalized savings recommendations and spending anomaly detection powered by the Google Gemini API.

Security

  • Firebase Authentication (Email, Google, Apple, Phone)
  • Biometric lock (Face ID / Touch ID / Fingerprint)
  • Encrypted local storage (flutter_secure_storage)

Testing

# Run unit tests
flutter test test/unit/

# Run widget tests
flutter test test/widget/

# Run integration tests (requires connected device)
flutter test integration_test/

# With coverage report
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

Testing Tools: flutter_test Β· mockito Β· integration_test


Build & Distribution

Android

# Debug APK
flutter build apk --debug

# Release APK
flutter build apk --release --dart-define=API_BASE_URL=https://api.zenbudget.app/api/v1

# AAB for Play Store
flutter build appbundle --release

iOS

# Debug
flutter build ios --debug

# Release (requires Archive via Xcode)
flutter build ios --release

Firebase App Distribution (Beta)

firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk \
  --app YOUR_FIREBASE_APP_ID \
  --groups "beta-testers"

GitHub Actions

CI/CD pipelines are defined in .github/workflows/:

  • ci.yml β€” Lint, test, build checks
  • deploy-android.yml β€” Automated upload to Play Store
  • deploy-ios.yml β€” Automated upload to TestFlight

Code Generation

Run after any model changes for Retrofit clients and JSON serialization:

dart run build_runner build --delete-conflicting-outputs

# Watch mode during development
dart run build_runner watch --delete-conflicting-outputs

Localization

Supported languages: TR Β· EN Β· FR Β· ES Β· AR Β· RU Β· PT Β· IT Β· DE

To add new translations:

# Edit the ARB files
lib/l10n/app_tr.arb
lib/l10n/app_en.arb
# ...

# Generate localization code
flutter gen-l10n

πŸ“„ License

This project is licensed under the MIT License.


⭐ If you like this project, don't forget to give it a star!


ZenBudget Mobile β€” Financial peace, in your pocket πŸ’™

About

A smart, cross-platform personal budget tracker built with Flutter. Features OCR receipt scanning, voice commands, Riverpod state management, and AI-powered financial insights.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages