This application aims to assist users in recording and monitoring financial conditions through a simple Cash Flow based accounting system. Suitable for individuals, or small business owners who want to understand the flow of money without the complexity of a full accounting system.
⚠️ In early development stage.
Features subject to change as needed.
- Record financial transactions efficiently.
- Generate daily, monthly, or annual financial reports automatically:
- Cash Flow Statement
- Profit and Loss Statement
- Balance Sheet
-
✍️ Transaction Recording
Record income and expenses. In order to be formed into financial reports, each record will have categories such as assets, liabilities, etc. -
📊 Automated Reports
The application can display financial reports based on data from previous transaction records. -
🗂️ Project Based
Want to create another financial reports for business or other purposes? Simply create a new project and the data will be separate from other projects.
-
Project Creation.
-
Recording transactions on the project.
-
Generation of financial reports from project transactions.
-
Import/Export data with the help of spreadsheet files.
-
If possible, integrate users' Google Drive (Spreadsheet) to share data across devices, so developers don't have to pay database fees 🤣.
-
Install Flutter SDK with the same version as defined on
pubspec.yamlor.fvmrcfile.You may use fvm (Flutter Version Manager) for easy installation.
fvm use prod
Main packages that are used as foundation for this project.
- freezed ~ Data class with less boilerplate syntax.
- injectable ~ Dependency injection framework.
- go_router ~ Web friendly routing.
- riverpod ~ State management.
Most of them need to generate its utilities with build_runner.
-
Install dependencies.
flutter pub get
-
Intialize git hooks to validate commit messages.
dart run husky install
-
Build project environment.
dart run build_runner build -d # generate code utils -
Now you're good to go!
# Check connected devices flutter devices # Check available emulators flutter emulators # Run app flutter run -d <device-id>
This project modified its name in pubspec.yaml to app, so default package
import won't work.
// Do
import "package:app/main.dart";
// Instead of
import "package:fl_basic_accounting/main.dart";This project will follow the clean-architecture.
└── lib/
├── domain/ (repos/services abstraction, and data entities)
├── infrastructures/ (repos/services implementation, "data" layer stored here too)
├── use_cases/ (app logic)
├── interfaces/ (app UI/UX, also known as "presentation" layer)
└── **/libs/ (Shared constants, utilities, etc. May defined on others sub folders)We use conventional-commits to handle Git commit messages, and Github PR titles.
<type>(<scopes(optional)>): <content>Examples:
feat: add foo servicebug: unresponsive bar page
<type>(<scopes(optional)>): <content> #<issue-number>Examples:
feat: add foo abstraction #89fix: fix invalid behavior of bar method #82
Since release-please-action will need PR hash ref on commit msg, we won't recommend to do rebase merge on
mainbranch.
<type>-<content>-#<issue-number>Examples:
chore-update-docs-#26fix-unresponsive-foo-page-#75