Note: Only Android 64-bit (arm64-v8a) available. iOS coming soon!
A modern, feature-rich expense tracking application built with Flutter and Material 3 design. Track your spending, visualize patterns, and manage payments efficiently.
- Material You Colors: Adapts to device wallpaper for personalized experience
- Light/Dark Mode: Full theme support with persistent user preference
- Smooth Transitions: Animated theme switching without app restart
- Multiple Payment Methods: Cash, Credit Card, Debit Card, UPI, Other
- Segmented Selection UI: Intuitive payment method picker
- Persistent Storage: All payment data saved in Hive database
- Quick Add/Edit: Bottom sheet form for rapid expense entry
- 7 Categories: Food, Transport, Entertainment, Shopping, Utilities, Health, Other
- Real-time Updates: AnimatedList for smooth expense additions/deletions
- Recent Transactions: Always-visible recent expense list
- Weekly Trends: Line chart showing 7-day spending patterns
- Category Breakdown: Visual pie/bar charts of spending by category
- Summary Cards: Today, This Week, This Month totals
- Export Options: Share expenses or download as PDF
- Splash Screen: Animated splash with developer credit
- Loading States: Staggered wave loading animation
- Empty States: Beautiful empty state with call-to-action
- Smooth Animations: Fade, scale, and slide transitions throughout
- Hive Database: Fast, local-only data storage (no cloud)
- SharedPreferences: Theme preference persistence
- Auto-sync: Immediate data save on all operations
lib/
βββ main.dart # App entry point
βββ models/
β βββ expense.dart # Expense model (Hive)
β βββ expense.g.dart # Generated adapter
βββ services/
β βββ expense_storage_service.dart # Database operations
β βββ export_service.dart # PDF/Share export
β βββ export_service_stub.dart # Stub for non-web
β βββ export_service_web.dart # Web implementation
β βββ theme_storage_service.dart # Theme persistence
βββ ui/
β βββ screens/
β β βββ home_screen.dart # Main expenses & analytics
β β βββ splash_screen.dart # Splash animation
β βββ theme/
β β βββ app_theme.dart # Material 3 themes
β βββ widgets/
β βββ expense_card.dart # Individual expense tile
β βββ expense_bottom_sheet.dart # Add/edit form
β βββ expense_chart.dart # Chart visualizations
β βββ summary_card.dart # Summary tiles
β βββ empty_state.dart # Empty state UI
β βββ about_dialog.dart # Developer info
β βββ expenses_detail_dialog.dart # Period details
β βββ all_expenses_dialog.dart # Full expense list
| Layer | Technology | Purpose |
|---|---|---|
| UI Framework | Flutter 3.10+ | Cross-platform development |
| State Management | StatefulWidget | Simple, built-in state |
| Database | Hive 2.2+ | Fast, local data storage |
| Charts | fl_chart 0.69+ | Data visualization |
| Theming | dynamic_color 1.7+ | Material You adaptation |
| Persistence | shared_preferences 2.2+ | Simple key-value store |
| Export | pdf 3.10+ | PDF generation |
| Sharing | share_plus 7.1+ | Share functionality |
- Flutter 3.10.4+
- Dart 3.10.4+
- iOS 11.0+ (macOS 10.15+)
- Android 5.1+ (API 21+)
- Windows 10+ / Linux (GTK 3.0+)
-
Clone Repository
git clone <repository-url> cd expense_tracker
-
Get Dependencies
flutter pub get
-
Generate Models (if needed)
flutter pub run build_runner build
-
Run Application
# Development flutter run # Specific platform flutter run -d windows flutter run -d android
- Tap "Add Expense" FAB (bottom-right)
- Fill in details:
- Title (required)
- Amount (required)
- Category (select from 7)
- Date (tap to pick)
- Payment Method (Cash/Card/UPI/etc)
- Tap "Save" to confirm
- Switch to "Analytics" tab
- View Weekly Trend chart (7-day spending)
- See Category Breakdown (visual percentage)
- Use chart toggle for Weekly/Category view
- Tap β― (Menu) β More Options
- Choose:
- Share: Send as text to any app
- Download PDF: Save PDF to device
- Tap β― (Menu) β More Options
- Use theme toggle: βοΈ Light or π Dark
- Selection saves automatically
Edit lib/ui/theme/app_theme.dart:
static const Color primaryColor = Color(0xFF6750A4); // Change this- Edit lib/models/expense.dart
- Add to
ExpenseCategoryenum - Regenerate adapters:
flutter pub run build_runner build
Edit category colors in lib/models/expense.dart:
case ExpenseCategory.food:
return 0xFFFF6B6B; // Change colorclass Expense {
final String id; // UUID
final String title; // Expense name
final double amount; // In rupees
final ExpenseCategory category;
final DateTime date; // When spent
final PaymentMethod paymentMethod;
final DateTime createdAt; // Record time
}- π Food
- π Transport
- π¬ Entertainment
- ποΈ Shopping
- π‘ Utilities
- βοΈ Health
- π·οΈ Other
- π΅ Cash
- π³ Credit Card
- π³ Debit Card
- π± UPI
- β Other
- Add expense with all fields
- Edit existing expense
- Delete expense (with confirmation)
- Switch between Expenses/Analytics tabs
- Toggle theme (Light/Dark)
- Export to PDF
- Share expenses
- Verify data persists after restart
- Windows requires Developer Mode enabled for Flutter plugins
- PDF export may take 2-3 seconds on older devices
- Dynamic colors require Android 12+ for best results
- Dynamic Material You theming
- Persistent theme preference
- Payment method selection
- Enhanced splash animation
- Always-visible menu actions
- Light mode background fix
- Basic expense CRUD
- Weekly/Category analytics
- Export to PDF
- Share functionality
- Initial release
- Expense tracking
- Dark theme
dependencies:
flutter: sdk: flutter
hive: ^2.2.3 # Database
hive_flutter: ^1.1.0 # Flutter adapter
fl_chart: ^0.69.0 # Charts
intl: ^0.19.0 # Internationalization
uuid: ^4.5.1 # ID generation
url_launcher: ^6.2.0 # URL opening
loading_animation_widget: ^1.2.0 # Loading animation
pdf: ^3.10.0 # PDF generation
share_plus: ^7.1.0 # Sharing
path_provider: ^2.1.0 # File paths
shared_preferences: ^2.2.2 # Preferences
dynamic_color: ^1.7.0 # Material YouContributions welcome! Please:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
Sabarivasan
- Portfolio: portfolio.vasan.tech
- GitHub: @Sabari-Vasan-SM
- LinkedIn: Sabarivasan S M
- Material Design 3 guidelines
- Flutter community
- All contributors and testers
For questions or feedback, reach out on LinkedIn or GitHub!
Made with β€οΈ by Sabarivasan