Skip to content

Repository files navigation

Mehmaan - Property Listing App

A modern Flutter application for property listing and management with Firebase backend integration.

Features

  • 🏠 Property Listings: Browse and search properties with detailed information
  • ❤️ Favorites: Save and manage favorite properties
  • 📱 User Authentication: Secure login and registration with email verification
  • 📸 Image Upload: Upload multiple property images to Firebase Storage
  • 🗺️ Maps Integration: View property locations on interactive maps
  • 💰 Payment Integration: Stripe payment processing for bookings
  • 🔍 Search & Filter: Advanced search and filtering capabilities

Screenshots

Technologies Used

  • Frontend: Flutter (Dart)
  • Backend: Firebase
    • Firebase Authentication
    • Cloud Firestore (Database)
    • Firebase Storage (Image storage)
  • Maps: Flutter Map with OpenStreetMap
  • Payments: Stripe
  • State Management: Provider

Getting Started

Prerequisites

  • Flutter SDK (>=3.1.5)
  • Android Studio / VS Code
  • Firebase account
  • Stripe account (for payments)

Installation

  1. Clone the repository

    git clone https://github.com/YOUR_USERNAME/mehmaan-property-app.git
    cd mehmaan-property-app
  2. Install dependencies

    flutter pub get
  3. Firebase Setup

    • Create a new Firebase project
    • Enable Authentication, Firestore, and Storage
    • Add your google-services.json (Android) and GoogleService-Info.plist (iOS)
    • Update lib/firebase_options.dart with your project configuration
  4. Stripe Setup

    • Add your Stripe publishable key to lib/config/stripe_config.dart
  5. Run the app

    flutter run

Firebase Configuration

Firestore Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Properties collection
    match /properties/{document} {
      allow read: if true;
      allow write: if request.auth != null;
    }
    
    // Favorites collection
    match /favorites/{userId}/properties/{propertyId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

Storage Security Rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /property_images/{allPaths=**} {
      allow read: if true;
      allow write: if request.auth != null;
    }
  }
}

Project Structure

lib/
├── main.dart                 # App entry point
├── firebase_options.dart     # Firebase configuration
├── services/                 # Business logic services
│   ├── auth_service.dart
│   ├── property_service.dart
│   ├── favorites_service.dart
│   └── storage_service.dart
├── screens/                  # UI screens
│   ├── auth_screen.dart
│   ├── home_screen.dart
│   ├── favorites_screen.dart
│   ├── add_property_screen.dart
│   └── payment_screen.dart
└── widgets/                  # Reusable widgets
    └── animated_background.dart

Contributing

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

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

Contact

Your Name - your.email@example.com

Project Link: https://github.com/YOUR_USERNAME/mehmaan-property-app

Acknowledgments

  • Flutter team for the amazing framework
  • Firebase for backend services
  • OpenStreetMap for map tiles
  • Unsplash for sample property images

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages