A comprehensive Flutter app for managing personal finances with modern design and secure Supabase backend.
- 🔐 Secure Authentication: Email/password and Google OAuth with Supabase
- 📊 Financial Dashboard: Overview of income, expenses, and savings
- 💳 Transaction Management: Add and track income/expenses
- 📈 Budget Tracking: Set and monitor budgets by category
- 📱 Responsive Design: Works on mobile, tablet, and web
- 🌟 Modern UI: Clean, intuitive interface with Material Design 3
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- A Supabase account and project
-
Clone the repository
git clone <your-repo-url> cd HouseholdFinance
-
Install dependencies
flutter pub get
-
Set up Supabase
- Create a new project at supabase.com
- Run the SQL schema from
supabase_schema.sql - Configure your environment variables (see Configuration below)
-
Run the app
# For web flutter run -d chrome # For mobile (with emulator running) flutter run
Set your Supabase credentials using one of these methods:
export SUPABASE_URL=your_supabase_project_url
export SUPABASE_ANON_KEY=your_supabase_anon_keyflutter run --dart-define=SUPABASE_URL=your_url --dart-define=SUPABASE_ANON_KEY=your_keySUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_keyflutter build webflutter build apk --releaseflutter build ios --releaseRun all tests:
flutter testRun analysis:
flutter analyzelib/
├── auth/ # Authentication screens & providers
│ ├── providers/ # Riverpod auth providers
│ └── screens/ # Login/signup screens
├── dashboard/ # Main dashboard functionality
│ ├── screens/ # Dashboard screen
│ └── widgets/ # Dashboard widgets
├── shared/ # Shared utilities
│ ├── config/ # App configuration
│ └── models/ # Data models
└── main.dart # App entry point
- Flutter: UI framework
- Riverpod: State management
- Supabase: Backend-as-a-Service (Auth, Database, Real-time)
- Google Fonts: Typography
- Material Design 3: Design system
The project uses flutter_lints for consistent code formatting:
flutter analyzeUses Riverpod for clean, testable state management:
// Example provider
final authStateProvider = StreamProvider<User?>((ref) {
final auth = ref.watch(supabaseAuthProvider);
return auth.onAuthStateChange.map((event) => event.session?.user);
});The app uses the following Supabase tables:
profiles: User profile informationexpenses: User expense recordsincome: User income recordsbudgets: Budget categories and limits
See supabase_schema.sql for the complete schema.
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Flutter and Supabase
- Icons from Material Design Icons
- Fonts from Google Fonts
Made with ❤️ for better financial management