Skip to content

shubhamattri/HouseholdFinance

Repository files navigation

💰 Paisa Pal - Personal Finance Manager

A comprehensive Flutter app for managing personal finances with modern design and secure Supabase backend.

✨ Features

  • 🔐 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

🚀 Getting Started

Prerequisites

  • Flutter SDK (>=3.0.0)
  • Dart SDK (>=3.0.0)
  • A Supabase account and project

Installation

  1. Clone the repository

    git clone <your-repo-url>
    cd HouseholdFinance
  2. Install dependencies

    flutter pub get
  3. 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)
  4. Run the app

    # For web
    flutter run -d chrome
    
    # For mobile (with emulator running)
    flutter run

Configuration

Set your Supabase credentials using one of these methods:

Option 1: Environment Variables

export SUPABASE_URL=your_supabase_project_url
export SUPABASE_ANON_KEY=your_supabase_anon_key

Option 2: Build-time Variables

flutter run --dart-define=SUPABASE_URL=your_url --dart-define=SUPABASE_ANON_KEY=your_key

Option 3: Update .env file

SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key

🏗️ Build for Production

Web

flutter build web

Android

flutter build apk --release

iOS

flutter build ios --release

🧪 Testing

Run all tests:

flutter test

Run analysis:

flutter analyze

📁 Project Structure

lib/
├── 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

🛠️ Technologies Used

  • Flutter: UI framework
  • Riverpod: State management
  • Supabase: Backend-as-a-Service (Auth, Database, Real-time)
  • Google Fonts: Typography
  • Material Design 3: Design system

🔧 Development

Code Style

The project uses flutter_lints for consistent code formatting:

flutter analyze

State Management

Uses 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);
});

📈 Database Schema

The app uses the following Supabase tables:

  • profiles: User profile information
  • expenses: User expense records
  • income: User income records
  • budgets: Budget categories and limits

See supabase_schema.sql for the complete schema.

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with Flutter and Supabase
  • Icons from Material Design Icons
  • Fonts from Google Fonts

Made with ❤️ for better financial management

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages