- Overview
- Features
- Tech Stack
- Architecture
- Installation
- Configuration
- Deployment
- Contributing
- Team
- License
Patra is a modern dating application built with Flutter and powered by AI-driven matching algorithms. The app combines intuitive user experience with intelligent recommendation systems to help users find meaningful connections.
- 🤖 AI-Powered Matching: Smart recommendations using machine learning
- 🔥 Real-time Chat: Instant messaging with Firebase integration
- 📱 Cross-Platform: Works on iOS, Android, and Web
- ☁️ Cloud Integration: Seamless image uploads with Cloudinary
- 🔒 Secure Authentication: Firebase Auth with multiple providers
- ✅ User Authentication (College Mail Id)
- ✅ Profile Management with photo uploads
- ✅ Smart Matching Algorithm using ML recommendations
- ✅ Swipe Interface (Like, Pass, Super Like)
- ✅ Real-time Messaging
- ✅ Discovery Page with advanced filters
- ✅ Location-based Matching
- ✅ Push Notifications
- 🔄 ML Data Refresh for improved recommendations
- 📊 Analytics Integration with Firebase Analytics
- 🎨 Modern UI/UX with smooth animations
- 🌓 Theme Support (Light/Dark mode)
- 🔐 Privacy Controls and data encryption
- 📱 Responsive Design for all screen sizes
- Framework: Flutter 3.0+
- Language: Dart
- State Management: Provider / Riverpod
- UI Components: Material Design 3
- Navigation: Go Router
- Authentication: Firebase Auth
- Database: Cloud Firestore
- Storage: Firebase Storage + Cloudinary
- Analytics: Firebase Analytics
- Notifications: Firebase Cloud Messaging
- Language: Python 3.8+
- Framework: Flask
- ML Libraries: scikit-learn, pandas, numpy
- Database: Firebase Admin SDK
- Web: Vercel
- Mobile: Firebase App Distribution
- ML Service: Flask + Docker
┌─────────────────────────────────────────────────────────┐
│ Client Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ iOS │ │ Android │ │ Web │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Flutter Application │
│ ┌─────────────────────────────────────────────────┐ │
│ │ ConfigService │ │
│ │ (Environment Management) │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Service Layer │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Firebase │ │ Cloudinary │ │ ML Service │ │
│ │ Services │ │ (Images) │ │ (Python API) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
- Flutter SDK (3.0+)
- Dart SDK (2.17+)
- Firebase CLI
- Python 3.8+ (for ML service)
- Git
git clone https://github.com/5umitpandey/Patra.git
cd Patra1/patra_initialflutter pub getCreate environment files:
# Copy example files
cp .env.example .env
cp api_keys.env.example api_keys.env
# Edit with your actual keys
nano .env
nano api_keys.env# Install Firebase CLI
npm install -g firebase-tools
# Login and configure
firebase login
flutterfire configure# Development mode
flutter run
# Web development
flutter run -d chrome
# Release build
flutter build apk --release # Android
flutter build ios --release # iOS
flutter build web --release # Web# Firebase Configuration
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_WEB_API_KEY=your-api-key
FIREBASE_WEB_APP_ID=your-app-id
FIREBASE_AUTH_DOMAIN=your-domain.firebaseapp.com
# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret
CLOUDINARY_UPLOAD_PRESET=your-preset
# Environment
ENVIRONMENT=development # development, staging, production
DEBUG_MODE=true
ML_MATCHING_ENABLED=true# Feature Flags
PREMIUM_FEATURES_ENABLED=false
VIDEO_CALL_ENABLED=false
PUSH_NOTIFICATIONS_ENABLED=true
# Limits
MAX_PHOTOS_PER_USER=6
MAX_SWIPES_PER_DAY=100
MAX_MATCHES_PER_REQUEST=20
# External Services
GOOGLE_ANALYTICS_ID=your-ga-id
SENTRY_DSN=your-sentry-dsn- Create a new Firebase project
- Enable Authentication (Email, Google, Facebook)
- Create Firestore database
- Configure storage rules
- Add your app (iOS/Android/Web)
- Create Cloudinary account
- Get cloud name and API credentials
- Create upload preset for image processing
The AI-powered recommendation system runs as a separate Python service.
- User behavior analysis
- Compatibility scoring
- Preference learning
- Real-time recommendations
cd ml_backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Setup Firebase credentials
export GOOGLE_APPLICATION_CREDENTIALS="path/to/firebase-key.json"
# Run service
python app.pyGET /health # Service status
POST /recommendations/{user_id} # Get recommendations
POST /refresh-data # Refresh ML model
# Build image
docker build -t patra-ml-service .
# Run container
docker run -p 5000:5000 -e GOOGLE_APPLICATION_CREDENTIALS=/app/firebase-key.json patra-ml-service# Install Vercel CLI
npm install -g vercel
# Deploy
flutter build web --release
vercel --prod# Android
flutter build appbundle --release
# iOS (requires Mac)
flutter build ipa --release
# Firebase App Distribution
firebase appdistribution:distribute build/app/outputs/bundle/release/app-release.aab \
--app 1:123456789:android:abcdef \
--groups "testers"# Staging
flutter build web --dart-define=ENVIRONMENT=staging
# Production
flutter build web --dart-define=ENVIRONMENT=production \
--dart-define=DEBUG_MODE=falselib/
├── main.dart # App entry point
├── auth/ # Authentication logic
├── pages/ # UI screens
│ ├── homePage.dart # Main app interface
│ ├── loginPage.dart # User login
│ ├── signUpPage.dart # User registration
│ └── discoveryPage.dart # Match discovery
├── services/ # Business logic
│ ├── config_service.dart # Environment management
│ ├── auth_service.dart # Authentication service
│ ├── firestore_service.dart # Database operations
│ ├── ml_service.dart # ML API integration
│ └── cloudinary_service.dart # Image uploads
├── models/ # Data models
├── widgets/ # Reusable components
└── utils/ # Helper functions
- Linting:
flutter analyze - Formatting:
dart format . - Testing:
flutter test
# Feature branch
git checkout -b feature/new-feature
git commit -m "feat: add new feature"
git push origin feature/new-feature
# Create pull request# Debug mode
flutter run --debug
# Profile mode
flutter run --profile
# Release mode
flutter run --release- 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
- Follow Flutter/Dart style guide
- Write unit tests for new features
- Update documentation
- Ensure CI/CD passes
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- Firebase for backend services
- Cloudinary for image management
- Open source community for inspiration
Built with ❤️ using Flutter

