Skip to content

Danish-Git/expense_manager

Repository files navigation

Expense Manager

Index of the documentation

  1. Introduction
  2. Code Architecture
  3. Database Structure
  4. App Flow Chart
  5. Installation
  6. Features
  7. Unit and Widget Test Cases

Introduction

Is an application to keep track of your daily expenses. It also have multiple languages support to make it more user friendly

Code Architecture

Clean architecture revolves around separating code into layers, each with a distinct responsibility. The primary layers include:

  1. Application Layer: The application layer contains the application's core business logic. It serves as an intermediary between the presentation and domain layers, coordinating data flow and enforcing business rules.

  2. Data Layer: This layer manages data storage, retrieval, and interactions with external APIs. It encompasses repositories, data sources, and API clients.

  3. Domain Layer: The domain layer defines the fundamental business logic and domain models of the application. It remains independent of specific UI frameworks or databases, ensuring high reusability and testability.

  4. Presentation Layer: This layer concerns itself with the user interface and interactions. It includes global widgets, screens, and controllers responsible for user input and data display.

Screenshot 2024-07-09 at 8 34 10 PM

Database Structure

The application uses SQLite for data storage. Below is the structure of the database:

Screenshot 2024-07-09 at 9 09 36 PM

App Flow Chart

Below is a flow chart illustrating the app's workflow:

app-flow-chart

Installation

This project is based on Flutter framework.

For help getting started with Flutter setup, view the online documentation, which offers tutorials, guidance on mobile development.

This project is based latest configuration (for now) of flutter framework. Please refer to the attached flutter doctor summery

apple@ expense_manager % flutter doctor  
Doctor summary (to see all details, run flutter doctor -v):  
[✓] Flutter (Channel stable, 3.22.2, on macOS 14.4.1)  
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)  
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)  
[✓] Chrome - develop for the web  
[✓] Android Studio (version 2024.1,1)  
[✓] VS Code (version 1.90.2)  
[✓] Network resources  
  
• No issues found!

You may proceed with clonnong the project and making project up and running you may follow the following steps

  • Navigate to the Project Directory:

    • Once the cloning process is complete, navigate into the project directory: cd <project_directory>
    • Replace <project_directory> with the name of the directory created during cloning.
  • Check Flutter Dependencies:

    • Ensure that the Flutter dependencies are up to date. Run: flutter pub get
  • Open in IDE:

    • Open the project in your preferred IDE or code editor (e.g., VS Code, Android Studio).
  • Run the Project:

    • Connect an emulator/device or use an existing one that is running.
    • Run the Flutter project using: flutter run
    • This command builds and deploys the Flutter project on your connected device or emulator.
  • Verify Setup:

    • Once the project builds successfully, you should see the app running on your emulator/device.

Features of The Application

1. Responsive UI

This application has fully responsive user interface, ensuring a seamless experience across a wide range of devices, from smartphones and tablets.

  • Expense History Screen

Large Tablet Small Tablet Mobile
Screenshot_1720529777 Screenshot_1720529762 Screenshot_1720529800
  • Add / Edit Expense Form

Large Tablet Small Tablet Mobile
Screenshot_1720526239 Screenshot_1720526463 Screenshot_1720526243
  • Settings Screen

Large Tablet Small Tablet Mobile
Screenshot_1720532888 Screenshot_1720526490 Screenshot_1720526303

2. Multi-language Support

This application supports English and Urdu languages. This feature allows users to choose their preferred language, enhancing usability and accessibility.

  • Expense History Screen (Urdu)

Large Tablet Small Tablet Mobile
Screenshot_1720533909 Screenshot_1720533978 Screenshot_1720534016
  • Add / Edit Expense Form (Urdu)

Large Tablet Small Tablet Mobile
Screenshot_1720533960 Screenshot_1720533986 Screenshot_1720534025
  • Settings Screen (Urdu)

Large Tablet Small Tablet Mobile
Screenshot_1720533869 Screenshot_1720526497 Screenshot_1720526549

3. Reminder to Add Expense

This application includes a feature that allows users to set reminders to add their expenses. This feature ensures that users stay on top of their financial tracking by sending notifications at the scheduled times.

  • Notification

Tablet Mobile
Screenshot_1720526440 Screenshot_1720526367

Unit and Widget Test Cases

Ensuring the reliability and correctness of our application is a top priority. We have implemented comprehensive unit and widget test cases to verify that our application behaves as expected.

Key aspects of our testing strategy include:

1. Unit Tests:

Focused on testing individual functions, methods, and classes to ensure they work correctly in isolation. Example:

Screenshot 2024-07-10 at 1 17 13 AM

2. Widget Tests:

Focused on testing the UI components and their interactions. These tests ensure that widgets render correctly and respond to user input as expected. Example:

Screenshot 2024-07-10 at 1 21 21 AM

There are a total of 56 test cases, combining both unit and widget tests. To run the tests, use the following command: flutter test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published