- Introduction
- Code Architecture
- Database Structure
- App Flow Chart
- Installation
- Features
- Unit and Widget Test Cases
Is an application to keep track of your daily expenses. It also have multiple languages support to make it more user friendly
Clean architecture revolves around separating code into layers, each with a distinct responsibility. The primary layers include:
-
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.
-
Data Layer: This layer manages data storage, retrieval, and interactions with external APIs. It encompasses repositories, data sources, and API clients.
-
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.
-
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.
The application uses SQLite for data storage. Below is the structure of the database:
Below is a flow chart illustrating the app's workflow:
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.
- Once the cloning process is complete, navigate into the project directory:
-
Check Flutter Dependencies:
- Ensure that the Flutter dependencies are up to date. Run:
flutter pub get
- Ensure that the Flutter dependencies are up to date. Run:
-
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.
This application has fully responsive user interface, ensuring a seamless experience across a wide range of devices, from smartphones and tablets.
Large Tablet | Small Tablet | Mobile |
---|---|---|
Large Tablet | Small Tablet | Mobile |
---|---|---|
Large Tablet | Small Tablet | Mobile |
---|---|---|
This application supports English and Urdu languages. This feature allows users to choose their preferred language, enhancing usability and accessibility.
Large Tablet | Small Tablet | Mobile |
---|---|---|
Large Tablet | Small Tablet | Mobile |
---|---|---|
Large Tablet | Small Tablet | Mobile |
---|---|---|
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.
Tablet | Mobile |
---|---|
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:
Focused on testing individual functions, methods, and classes to ensure they work correctly in isolation. Example:
Focused on testing the UI components and their interactions. These tests ensure that widgets render correctly and respond to user input as expected. Example:
There are a total of 56 test cases, combining both unit and widget tests. To run the tests, use the following command: flutter test