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