A comprehensive Flutter-based social networking app designed for students to connect, share, and engage with campus life.
- ✅ Authentication: Secure email/password authentication with Firebase
- ✅ User Profiles: Customizable profiles with bio, social links, and profile pictures
- ✅ Dynamic News Feed: Instagram-style feed with posts, images, videos, and text
- ✅ Social Engagement: Like, comment, and share posts
- ✅ Direct Messaging: Real-time chat with images, emojis, replies, and read receipts
- ✅ Campus Events: Create, discover, and RSVP to campus events
- ✅ Push Notifications: Real-time notifications for likes, comments, shares, and events
- ✅ Search: Search users, posts, and events
- ✅ Image/Video Posts: Upload photos and videos
- ✅ Custom Text Backgrounds: Create colorful text posts
- ✅ Comment Threading: Reply to comments with nested conversations
- ✅ Read Receipts: See when messages are read
- ✅ Typing Indicators: Know when someone is typing
- ✅ Message Replies: Reply to specific messages
- ✅ Emoji Support: Full emoji picker in messages
- ✅ Event Categories & Tags: Organize events with categories and tags
- ✅ Event Capacity: Set and enforce attendee limits
- Flutter SDK (3.9.2 or higher)
- Dart SDK
- Firebase account
- Android Studio / Xcode (for mobile development)
- Git
-
Clone the repository
git clone <repository-url> cd quadconnect
-
Install dependencies
flutter pub get
-
Firebase Setup
- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Enable Cloud Firestore
- Enable Firebase Storage
- Enable Firebase Cloud Messaging
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Place them in:
android/app/google-services.jsonios/Runner/GoogleService-Info.plist
-
Configure Firebase Options
flutterfire configure
Or manually create
lib/firebase_options.dartwith your Firebase configuration. -
Deploy Firebase Rules
# Deploy Firestore rules firebase deploy --only firestore:rules # Deploy Storage rules firebase deploy --only storage
-
Run the app
flutter run
lib/
├── main.dart # App entry point
├── models/ # Data models
│ ├── user_model.dart
│ ├── post_model.dart
│ ├── comment_model.dart
│ ├── event_model.dart
│ └── chat_message_model.dart
├── screens/ # UI screens
│ ├── login_page.dart
│ ├── feed_page.dart
│ ├── profile_page.dart
│ ├── create_post_page.dart
│ ├── comments_page.dart
│ ├── chat_page.dart
│ ├── messages_page.dart
│ ├── events_page.dart
│ ├── create_event_page.dart
│ ├── search_page.dart
│ └── notifications_page.dart
├── services/ # Business logic
│ ├── auth_service.dart
│ ├── user_service.dart
│ ├── post_service.dart
│ ├── comment_service.dart
│ ├── message_service.dart
│ ├── event_service.dart
│ ├── notification_service.dart
│ └── share_service.dart
├── widgets/ # Reusable widgets
│ ├── post_card.dart
│ ├── share_bottom_sheet.dart
│ ├── skeleton_loader.dart
│ └── ...
├── theme/ # App theming
│ └── app_theme.dart
└── utils/ # Utilities
├── error_messages.dart
├── responsive.dart
└── page_transitions.dart
Located in firestore.rules. Deploy with:
firebase deploy --only firestore:rulesLocated in storage.rules. Deploy with:
firebase deploy --only storageLocated in firestore.indexes.json. Deploy with:
firebase deploy --only firestore:indexes- Minimum SDK: 21 (Android 5.0)
- Target SDK: 33+
- Permissions: Already configured in
AndroidManifest.xml- Internet
- Camera
- Storage
- Minimum iOS: 12.0
- Permissions: Configure in
Info.plist- Camera usage
- Photo library access
flutter build apk --releaseOutput: build/app/outputs/flutter-apk/app-release.apk
flutter build appbundle --releaseOutput: build/app/outputs/bundle/release/app-release.aab
flutter build ios --releasefirebase_core: Firebase initializationfirebase_auth: Authenticationcloud_firestore: Databasefirebase_storage: File storagefirebase_messaging: Push notifications
cached_network_image: Optimized image loadingimage_picker: Camera/gallery accessemoji_picker_flutter: Emoji pickershare_plus: Sharing functionalityurl_launcher: Open URLstimeago: Relative time formattingintl: Internationalization
- All Firebase rules are configured for security
- User authentication required for sensitive operations
- Ownership validation for edits/deletes
- Secure file uploads with validation
flutter test- Unit tests for services
- Widget tests for UI components
- Integration tests for critical flows
- ✅ Image caching with
CachedNetworkImage - ✅ Optimized memory usage (memCacheWidth/Height)
- ✅ Client-side filtering to avoid composite indexes
- ✅ Efficient real-time streams
- ✅ Skeleton loaders for better UX
- ✅ Lazy loading for lists
-
Firebase not initialized
- Ensure
firebase_options.dartexists - Check Firebase project configuration
- Ensure
-
Image upload fails
- Check Firebase Storage is enabled
- Verify Storage rules are deployed
- Check billing plan (Blaze plan required)
-
Notifications not working
- Ensure FCM is configured
- Check notification permissions
- Verify
google-services.jsonis correct
-
Build errors
- Run
flutter clean - Run
flutter pub get - Check Flutter version compatibility
- Run
- Email/Password authentication
- User registration and login
- Session management
users: User profilesposts: User postscomments: Post commentsmessages: Direct messagesevents: Campus eventsnotifications: User notifications
profile_images/: Profile picturesimages/: Post imagesvideos/: Post videosmessages/: Message images
- Primary Color: Blue
- Background: White
- Text: Black/Grey scale
- Icons: Material Design Icons
This project is for educational purposes.
- Development Team
For issues and questions, please contact the development team.
Version: 2.0.0
Last Updated: 2024