Welcome to the Personal Finance App repository! This Flutter application helps you manage your personal finances by tracking transactions, setting budgets, and achieving financial goals.
Note
The entire code base has been crafted by the DeepSeek-Coder AI model, tailored to the specifications detailed below.
- User Authentication: Secure login and registration functionality.
- Transaction Management: View, add, and manage your financial transactions.
- Budget Tracking: Set and monitor budget categories.
- Financial Goals: Define and track your financial goals with deadlines.
- Charts and Analytics: Visualize your financial data with charts for better insights.
-
Clone the repository:
git clone https://github.com/luke-b/personal-finance-app.git
-
Navigate to the project directory:
cd personal-finance-app
-
Install dependencies:
flutter pub get
-
Run the app:
flutter run
-
Default login:
email: default@example.com password: password
Contributions are welcome! Please read the contributing guidelines to get started.
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any questions or suggestions, feel free to open an issue or contact us directly.
Thank you for checking out the Personal Finance App! We hope you find it useful and welcome any feedback or contributions.
Project structure for the Personal Finance App:
personal_finance_app/
├── lib/
│ ├── main.dart
│ ├── models/
│ │ ├── user.dart
│ │ ├── transaction.dart
│ │ ├── budget.dart
│ │ └── financial_goal.dart
│ ├── screens/
│ │ ├── login_screen.dart
│ │ ├── home_screen.dart
│ │ ├── transaction_screen.dart
│ │ ├── budget_screen.dart
│ │ └── goal_screen.dart
│ ├── services/
│ │ ├── authentication_service.dart
│ │ ├── database_service.dart
│ │ └── chart_service.dart
│ ├── widgets/
│ │ ├── transaction_list.dart
│ │ ├── budget_chart.dart
│ │ └── goal_progress.dart
│ ├── utils/
│ │ ├── constants.dart
│ │ └── helpers.dart
│ └── state/
│ └── user_state.dart
├── test/
│ ├── models/
│ │ ├── user_test.dart
│ │ └── transaction_test.dart
│ ├── services/
│ │ └── authentication_service_test.dart
│ └── widgets/
│ └── transaction_list_test.dart
├── pubspec.yaml
└── README.md
The entry point of the application. Configures the app's theme and routes.
Contains data models for the application:
user.dart
: Defines theUser
model.transaction.dart
: Defines theTransaction
model.budget.dart
: Defines theBudget
model.financial_goal.dart
: Defines theFinancialGoal
model.
Contains the main screens of the application:
login_screen.dart
: Handles user login.home_screen.dart
: The main dashboard screen.transaction_screen.dart
: Displays the user's transactions.budget_screen.dart
: Displays the user's budgets.goal_screen.dart
: Displays the user's financial goals.
Contains services for handling business logic:
authentication_service.dart
: Handles user authentication.database_service.dart
: Manages database interactions.chart_service.dart
: Provides chart generation functionality.
Contains reusable widgets:
transaction_list.dart
: Displays a list of transactions.budget_chart.dart
: Displays a chart of budgets.goal_progress.dart
: Displays the progress of a financial goal.
Contains utility files:
constants.dart
: Defines constants used throughout the app.helpers.dart
: Contains helper functions for common tasks.
Contains state management files:
user_state.dart
: Manages the state of the logged-in user.
Contains test files for models, services, and widgets:
models/
: Tests for data models.services/
: Tests for services.widgets/
: Tests for widgets.
Contains dependencies and metadata for the project.
Entity-Relationship (ER) analysis:
-
User
- Attributes: UserID, Name, Email, Password, Age
-
Account
- Attributes: AccountID, UserID, AccountName, Balance
-
Transaction
- Attributes: TransactionID, AccountID, Date, Amount, Category, Description
-
Budget
- Attributes: BudgetID, UserID, Category, Amount, Period
-
FinancialGoal
- Attributes: GoalID, UserID, GoalName, TargetAmount, CurrentAmount, Deadline
-
User-Account
- One user can have multiple accounts (1:N)
-
Account-Transaction
- One account can have multiple transactions (1:N)
-
User-Budget
- One user can set multiple budgets (1:N)
-
User-FinancialGoal
- One user can set multiple financial goals (1:N)
-
User
- UserID (PK)
- Name
- Password
- Age
-
Account
- AccountID (PK)
- UserID (FK)
- AccountName
- Balance
-
Transaction
- TransactionID (PK)
- AccountID (FK)
- Date
- Amount
- Category
- Description
-
Budget
- BudgetID (PK)
- UserID (FK)
- Category
- Amount
- Period
-
FinancialGoal
- GoalID (PK)
- UserID (FK)
- GoalName
- TargetAmount
- CurrentAmount
- Deadline
- User 1:N Account
- Account 1:N Transaction
- User 1:N Budget
- User 1:N FinancialGoal
The scope for the personal finance management app:
- Third-party authentication services: No, stick to email/password registration and login for simplicity.
- Registration and login forms: Basic email/password forms are sufficient.
- Security measures: Standard password hashing and salting for security.
- Database technology: Use local storage with the option to export data to CSV for backup.
- Data synchronization: Not required as local storage is sufficient.
- Data encryption and privacy: Basic encryption for local storage to protect user data.
- UI designs or themes: Minimalist design with a sleek, intuitive interface.
- Visual elements: Simple, clean icons and a neutral color scheme.
- Navigation: Use a bottom navigation bar for easy access to key sections.
- Transaction types: Focus on income and expenses.
- Transaction categories: Include essential categories like groceries, utilities, entertainment.
- Recurring transactions: Not a priority; can be considered in future updates.
- Budget types: Support monthly budgets initially.
- Budget alerts: Set basic notifications for budget thresholds.
- Goal tracking: Use simple progress bars to show goal progress.
- Chart types: Include basic bar charts for income vs. expenses.
- Chart data: Focus on monthly income and spending comparisons.
- Interactive elements: Basic chart functionality without advanced interactions.
- Feedback submission: Provide an in-app feedback form.
- Help section: Include a basic FAQ section within the app.
- User support: No dedicated support; rely on feedback form for user inquiries.
- Export data: Allow users to export transactions to CSV.
- Cloud backup: Not initially; consider in future updates.
- Data import: Not initially; consider in future updates.
- Monetization strategy: Free with no ads; consider premium features in future updates.
- Premium features: Not initially; consider advanced features in future updates.
- In-app purchases: Not initially; consider in future updates.
- Testing types: Conduct basic unit testing and manual user testing.
- Testing frameworks: Use Flutter's built-in testing frameworks for unit testing.
- Deployment: Plan to deploy the app on Google Play initially.