A modern, beautiful expense tracking app built with Flutter
Features β’ Screenshots β’ Tech Stack β’ Installation β’ Architecture β’ Contributing
- Multiple Account Types β Track Bank accounts, Trading portfolios, and Cash wallets
- Real-time Balance β See your total balance across all accounts at a glance
- Color-coded Categories β Easily distinguish between different account types
- Income & Expenses β Log all your financial activities with categories
- Transfer Between Accounts β Move money between your accounts seamlessly
- Transaction History β View, filter, and search through all your transactions
- Visual Charts β Beautiful pie charts and bar graphs powered by FL Chart
- Monthly Summaries β Track income vs expenses for any month
- Spending Patterns β Understand where your money goes
- Dark Mode Design β Stunning dark theme with glassmorphism effects
- Smooth Animations β Declarative animations throughout the app
- Modern Typography β Clean fonts via Google Fonts (Outfit & Inter)
- Responsive Layout β Works beautifully on phones, tablets, and desktop
- PIN Protection β Secure your financial data with a PIN
- Local Storage β All data stays on your device
- No Cloud Required β Complete privacy, works offline
- Multi-currency Support β Track expenses in your preferred currency
- Locale-aware Formatting β Proper number and date formatting
| Dashboard | Transactions | Insights | Accounts |
|---|---|---|---|
| Technology | Purpose |
|---|---|
| Flutter 3.5+ | Cross-platform UI framework |
| Dart 3.0+ | Programming language |
| Riverpod | State management |
| Go Router | Navigation & routing |
| Technology | Purpose |
|---|---|
| Drift (SQLite) | Local database |
| Shared Preferences | Settings storage |
| Freezed | Immutable data classes |
| Technology | Purpose |
|---|---|
| Flutter Animate | Declarative animations |
| FL Chart | Charts & graphs |
| Google Fonts | Typography |
| Glassmorphism | Modern glass effects |
| Technology | Purpose |
|---|---|
| intl | Date & number formatting |
| UUID | Unique ID generation |
| CSV | Data export support |
| Share Plus | Share functionality |
- Flutter SDK
>=3.5.0 - Dart SDK
>=3.0.0 - Android Studio / Xcode (for mobile development)
-
Clone the repository
git clone https://github.com/OpenVibes/Expense-Tracker.git cd expense-tracker-dart -
Install dependencies
flutter pub get
-
Generate code (for Drift, Freezed, Riverpod)
dart run build_runner build --delete-conflicting-outputs
-
Run the app
# For development flutter run # For specific platform flutter run -d android flutter run -d ios flutter run -d chrome flutter run -d windows flutter run -d macos flutter run -d linux
# Android APK
flutter build apk --release
# Android App Bundle
flutter build appbundle --release
# iOS
flutter build ios --release
# Web
flutter build web --releaseThe project follows a clean architecture pattern with clear separation of concerns:
lib/
βββ core/ # App-wide utilities
β βββ constants.dart # App constants
β βββ router.dart # Navigation setup
β βββ theme/ # Design system
β βββ app_colors.dart # Color palette
β βββ app_theme.dart # ThemeData
β
βββ data/ # Data layer
β βββ database/ # Drift database
β βββ database.dart # Tables & DAOs
β
βββ domain/ # Business logic
β βββ entities/ # Domain models
β βββ enums.dart # Enumerations
β
βββ presentation/ # UI layer
β βββ providers/ # Riverpod providers
β βββ screens/ # App screens
β β βββ auth/ # Authentication
β β βββ onboarding/ # Onboarding flow
β β βββ settings/ # Settings
β β βββ *.dart # Main screens
β βββ widgets/ # Reusable widgets
β
βββ main.dart # Entry point
- Provider Pattern β State management with Riverpod
- Repository Pattern β Data abstraction
- Composition β Widget composition for reusability
- Declarative UI β Flutter's widget-based architecture
| Color | Hex | Usage |
|---|---|---|
| π£ Primary | #6B4BFF |
Main actions, highlights |
| π΅ Secondary | #00D1FF |
Accent elements |
| π΄ Accent | #FF0080 |
Alerts, CTAs |
| β¬ Background | #050511 |
App background |
| π’ Success | #00FF94 |
Income, positive |
| π΄ Error | #FF3B30 |
Expenses, errors |
- Headings: Outfit (Bold, Semi-bold)
- Body: Inter (Regular, Medium)
| Platform | Status | Min Version |
|---|---|---|
| Android | β Supported | API 21 (5.0) |
| iOS | β Supported | iOS 12.0 |
| Web | β Supported | Modern browsers |
| Windows | β Supported | Windows 10+ |
| macOS | β Supported | macOS 10.14+ |
| Linux | β Supported | Modern distros |
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Update documentation as needed
- Test on multiple platforms when possible
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Team for the amazing framework
- Riverpod for state management
- FL Chart for beautiful charts
- All open-source contributors
Made with β€οΈ by OpenVibes
β Star this repo β’ π Report Bug β’ β¨ Request Feature