Skip to content

Elarionitis/Spendly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spendly

Flutter Version Firebase License Platform

Spendly is a premium, high-performance fintech application built with Flutter, designed to revolutionize how individuals and groups manage their finances. By combining personal expense tracking with powerful group settlement features, Spendly provides a seamless, real-time ecosystem for financial transparency.

πŸš€ Overview

Managing shared expensesβ€”from roommates splitting utilities to friends on a vacationβ€”often leads to complexity and friction. Spendly solves this by providing a centralized, real-time platform where users can log expenses, categorize spending, and settle debts with a single tap.

Built with a Feature-First Architecture, Spendly ensures scalability and maintainability, leveraging the power of Firebase for backend services and Riverpod for robust state management.

Key Value Propositions

  • Real-Time Synchronization: Instant updates across all devices using Cloud Firestore.
  • Group Dynamics: Create groups, invite friends, and split bills using various logic.
  • Data-Driven Insights: Beautifully rendered charts to visualize spending habits.
  • Premium UI/UX: Smooth animations and a modern design language powered by flutter_animate and google_fonts.

✨ Features

πŸ” Authentication & Security

  • Firebase Auth: Secure login via email/password.
  • Social Integration: One-tap Google Sign-In support.
  • Session Management: Persistent login states using shared_preferences.

πŸ“Š Personal Finance & Analytics

  • Expense Tracking: Log individual expenses with categories and timestamps.
  • Visual Analytics: Interactive pie and bar charts via fl_chart to monitor monthly burn rates.
  • Activity Feed: A chronological history of all financial transactions.

πŸ‘₯ Group Management & Settlements

  • Shared Ledgers: Create groups for specific events or households.
  • Smart Settlements: Algorithm-driven debt simplification with robust provider synchronization to ensure accurate "settle up" flows.
  • Comments & Interaction: Discuss specific expenses within the app to clarify costs.

πŸ›  Core Utilities

  • Image Support: Attach receipts to expenses using image_picker.
  • Theming: Dynamic theme support (Light/Dark mode) defined in the core configuration.
  • Deep Linking: Advanced routing handled by go_router.
  • Flexible Environments: Support for toggling between Demo Mode and Original Mode via app configuration.

πŸ›  Tech Stack

Category Technology
Framework Flutter (Dart)
State Management Riverpod
Backend/DB Firebase (Firestore, Auth)
Navigation GoRouter
Charts FL Chart
Animations Flutter Animate
Local Storage Shared Preferences

πŸ— Architecture

Spendly follows a Feature-First / Layered Architecture, separating concerns to ensure the codebase remains clean as it grows.

lib/
β”œβ”€β”€ core/                # Global configurations, shared widgets, and services
β”‚   β”œβ”€β”€ config/          # App constants and environment setup
β”‚   β”œβ”€β”€ models/          # Shared data models
β”‚   β”œβ”€β”€ repositories/    # Abstract data access layers
β”‚   β”œβ”€β”€ router/          # GoRouter definitions
β”‚   β”œβ”€β”€ theme/           # UI styling and colors
β”‚   └── widgets/         # Reusable UI components (Buttons, Inputs)
β”œβ”€β”€ features/            # Independent modules by business logic
β”‚   β”œβ”€β”€ auth/            # Login, Signup, Password recovery
β”‚   β”œβ”€β”€ dashboard/       # Main overview screen
β”‚   β”œβ”€β”€ expenses/        # Expense creation and listing
β”‚   β”œβ”€β”€ groups/          # Group management logic
β”‚   └── analytics/       # Data visualization logic
└── main.dart            # Application entry point

🚦 Getting Started

Prerequisites

  • Flutter SDK: >=3.3.0
  • Dart SDK: >=3.3.0 <4.0.0
  • A Firebase Project (for backend services)

Installation

  1. Clone the repository bash git clone https://github.com/Elarionitis/Spendly.git cd spendly

  2. Install dependencies bash flutter pub get

  3. Firebase Setup

    • Create a project in the Firebase Console.
    • Add Android/iOS apps to your Firebase project.
    • Download google-services.json (Android) and GoogleService-Info.plist (iOS).
    • Place them in android/app/ and ios/Runner/ respectively.
    • Alternatively, use the FlutterFire CLI to initialize the configuration: bash flutterfire configure
  4. Run the application bash flutter run

πŸ“– Usage

State Management Example (Riverpod)

Spendly uses Riverpod for reactive state. Here is how the expense and settlement states are typically accessed and synchronized:

dart // Accessing the expense provider final expenseList = ref.watch(expenseProvider);

// Monitoring settlement synchronization final settlementState = ref.watch(settlementProvider);

expenseList.when( data: (expenses) => ListView.builder( itemCount: expenses.length, itemBuilder: (context, index) => ExpenseTile(expenses[index]), ), loading: () => CircularProgressIndicator(), error: (err, stack) => Text('Error: $err'), );

Navigation

Routing is centralized in lib/core/router/:

dart context.pushNamed(AppRoute.expenseDetails.name, pathParameters: {'id': '123'});

Configuration Modes

The application environment can be toggled in lib/core/config/app_config.dart. This allows developers to switch between a demo environment and the original production-ready mode.


πŸ§ͺ Development

Running Tests

Ensure code quality by running the test suite. Tests are maintained to align with the latest UI and logic changes: bash flutter test

Code Style

This project adheres to flutter_lints. To check for linting issues: bash flutter analyze

Build Configuration

When updating platform-specific settings, ensure that the build scripts (e.g., android/app/build.gradle.kts) are correctly configured for the target environment and dependencies.

πŸš€ Deployment

Android

  1. Update the version in pubspec.yaml.
  2. Run the build command:
    flutter build apk --release

iOS

  1. Open ios/Runner.xcworkspace in Xcode.
  2. Ensure a valid Provisioning Profile is set.
  3. Run:
    flutter build ios --release

πŸ—Ί Roadmap

  • OCR Receipt Scanning: Automatically extract data from receipts using ML Kit.
  • Multi-Currency Support: Real-time currency conversion for international trips.
  • Export Reports: Generate PDF/CSV monthly financial statements.
  • Budgeting Mode: Set monthly limits for specific categories.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


🀝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ž Contact

Project Maintainer: Elarionitis
Project Link: https://github.com/Elarionitis/Spendly

About

Spendly is a Flutter-based expense management app that helps users track, split, and manage shared expenses efficiently with real-time data syncing and authentication.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors