General look of the app
Group chat view
Personal chats view
A chat platform designed to facilitate direct messaging and group discussions around academic subjects.
- Direct Messaging: Private conversations between students
- Question Threads: Topic-based group discussions organized by subject
- Subject-Based Groups: Join groups like "Anatomists", "Alchemists", etc.
- Dark Theme: Modern dark theme with salmon accents for improved readability
- Real-time Status: See which contacts are online and when others were last active
- Message Reactions: React to messages with emojis
- Achievements: Display user expertise and accomplishments
- Pagination: Efficient loading of chat messages
- Error Handling: Graceful handling of network issues and image loading failures
- Responsive Design: Consistent experience across different devices
- State Management: Proper state management using Provider
- Firebase Backend: Real-time messaging, authentication, and storage
- Push Notifications: Get notified about new messages
- Offline Support: Access previous conversations even without internet
lib/models: Data models for users, messages, and threadslib/providers: State management using the Provider patternlib/screens: UI screens for the applicationlib/widgets: Reusable UI componentslib/utils: Utility services and helper functions
- Provider Pattern: For state management
- Repository Pattern: For data access with Firebase
- Factory Pattern: For creating model instances from various data sources
- Flutter SDK (version 3.7.2 or higher)
- Dart SDK (version 3.0.0 or higher)
- Firebase account for backend services
-
Clone the repository:
git clone https://github.com/yourusername/academic-chat-app.git -
Install dependencies:
flutter pub get -
Setup Firebase:
- Create a new Firebase project at Firebase Console
- Add Android and iOS apps to your Firebase project
- Download and add the configuration files (google-services.json and GoogleService-Info.plist)
- Enable Authentication, Firestore, and Storage in the Firebase Console
-
Run the application:
flutter run
-
Update the app information in
android/app/build.gradle.kts:defaultConfig { applicationId = "com.yourdomain.chatapp" versionCode = flutter.versionCode versionName = flutter.versionName } -
Set up signing configuration:
- Create a keystore file:
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key - Create a
key.propertiesfile in the android folder with your keystore information - Configure gradle to use your keystore in
android/app/build.gradle.kts
- Create a keystore file:
-
Build the release APK or App Bundle:
# For APK flutter build apk --release # For App Bundle (Google Play) flutter build appbundle --release
- Update the Bundle Identifier in Xcode to your domain
- Configure app signing and provisioning profiles
- Build the release version:
flutter build ios --release
- Archive and upload to App Store Connect using Xcode
- Enable Proguard for Android by configuring
android/app/build.gradle.kts - Implement image caching and compression
- Use pagination for loading chat messages
- Enable Firebase Performance Monitoring
- Implement Firebase Crashlytics for crash reporting
- Add proper error boundaries and fallback UI
- Set up logging for critical operations
- Create a feedback mechanism for users to report issues
- Enhanced file and media sharing
- Advanced user profiles
- Rich text formatting in messages
- Read receipts
- Voice and video calls
- Study material sharing
- AI-powered study assistants
- Integration with learning management systems
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.