PennyWise is a simple expense tracking app works by parsing bank transaction SMS.
PennyWise is built with Flutter 3.x and uses GetX for state management, providing a robust and scalable architecture for expense tracking and financial management. The project features a clean folder structure, customizable themes, API integration, efficient state management, and comprehensive routing. Technologies used include but are not limited to Flutter, Dart, GetX, and more.
Step 1:
Clone this project to your local machine:
git clone https://github.com/Praveennaik8/PennyWise.git
Step 2:
Open the project folder with VS Code and execute the following command to install the dependency package:
flutter pub get
Step 3:
Open the main.dart file in the lib folder, F5 or Ctrl + F5 to run the project, and then you can start developing and debugging.
The following is the project folder structure (only the folders under lib are introduced)
lib/
|- api - Global Restful api requests, including interceptors, etc.
|- interceptors - Interceptors, including auth, request, and response interceptors.
|- api.dart - Restful api export file.
|- lang - Internationalization, including translation files, translation service files, etc.
|- lang.dart - Language export file.
|- models - Various structured entity classes, divided into request and response entities.
|- models.dart - Entity class export file.
|- modules - Business module folder.
|- auth - Login & Registration Module.
|- home - Home module.
|- splash - Splash module.
|- modules.dart - Module export file.
|- routes - Routing module.
|- app_pages.dart - Routing page configuration.
|- app_routes.dart - Route names.
|- routes.dart - Route export file.
|- Shared - Global shared folders, including static variables, global services, utils, global Widgets, etc.
|- shared.dart - Global shared export file.
|- parsers/ - You can add your custom parser here
|- theme - Theme folder.
|- app_bindings.dart - Services started before the app runs, such as Restful api.
|- di.dart - Global dependency injection objects, such as SharedPreferences, etc.
|- main.dart - Main entry.
- Get the latest release APK under assets https://github.com/Praveennaik8/PennyWise/releases
- Install it, You will need to disable play protect and enable installing from unknown sources: https://support.google.com/android/answer/9457058?hl=en
- Why? - Google marks SMS read access as a dangerous permission. So this cannot be on play store and you have to bypass this
- Is it dangerous? - No, the code is open source. Everything is done on your phone and your data doesn't go anywhere.
- Give restricted permissions - https://support.google.com/android/answer/12623953?hl=en
- Voila, you can manage your expenses now.
NOTE: IOS doesn't support SMS listing. don't ask me why I chose flutter only for android.
Initially forked from https://github.com/KevinZhang19870314/flutter_getx_boilerplate

