Duett is a friend-based matchmaking app that transforms the dating experience by eliminating awkward solo dates. Connect through your friends and enjoy meaningful relationships.
- Friend-Based Matchmaking: Let your friends help find your perfect match
- Group Chat System: Engage in "Floccs" with matched pairs
- Rich Media Sharing: Share photos and videos with potential matches
- Second-Degree Connections: Discover friends of friends
- Real-Time Notifications: Stay updated on matches and messages
- Flutter SDK (latest stable version)
- Dart SDK
- Android Studio or Xcode for mobile deployment
- Firebase project setup
-
Clone the repository:
git clone https://github.com/yourusername/duett.git cd duett -
Install dependencies:
flutter pub get -
Connect your Firebase project:
- Update
firebase_options.dartwith your Firebase configuration - Ensure Firebase services (Auth, Firestore, Storage, Messaging) are enabled
- Update
-
Run the app:
flutter run
- Run app:
flutter run - Run tests:
flutter test - Run single test:
flutter test test/widget_test.dart - Format code:
flutter format lib/ - Analyze code:
flutter analyze - Build APK:
flutter build apk - Build iOS:
flutter build ios - Generate launcher icons:
flutter pub run flutter_launcher_icons
- lib/auth/: Authentication screens and flows
- lib/chat/: Chat functionality (messages, chat rooms, duetts, floccs)
- lib/feed/: Feed screens for browsing matches and interactions
- lib/info/: User profile information and editing
- lib/matches/: Match management screens and functionalities
- lib/utils/: Utility classes for database, storage, images, etc.
- lib/videos/: Video recording and playback functionality
- assets/: App images, icons, and fonts
-
Data Models (
lib/types.dart):- User profiles, matches, chat rooms, etc.
-
Firebase Integration (
lib/utils/db_utils.dart):- Authentication, database operations, storage, messaging
-
State Management:
- Global app state via
globals.dart - Real-time data with Firebase
- Global app state via
-
UI Components:
- Consistent styling and theming
- Reusable UI elements
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use camelCase for variables/methods, PascalCase for classes/widgets
- Apply strong typing (avoid
varwhen type is known) - Extract reusable widgets into separate components
- Follow feature-based organization
- Use meaningful naming
This project is proprietary and confidential. Unauthorized copying or distribution is prohibited.