➡️ First Chat App is a Mobile Cross Platform App that fully supports Android, IOS, and Web platforms; I finished developing it in Mar. 2024. I built it to better understand & gain more experience in
- Flutter Framework
 - BLoC & Cubit Design Pattern
 - State Management
 - Clean Architecture
 - Chat Apps
 
➡️ And I was able to accomplish the above, using
- Dart Programming Language
 - Flutter Framework
 - BLoC Library
 - Firebase Cloud Firestore
 - Firebase Cloud Storage Database
 
➡️ App Features
- Create Account and Sign In
 - Update profile name, about, and picture
 - Search and Add contacts
 - View contact profile
 - Chat with contacts
 - List of all chats
 - Send messages, images, and videos in the chat
 - Read recepients (Sent, Delivered, Read)
 - Delete messages (For me, For every one)
 - Emoji keyboard
 - Select and send multiple media at once
 
➡️ In order to build and structure my project correctly and effeciently, I read, studied and followed these official documentations
- Flutter Framework: https://docs.flutter.dev/
 - State Management: https://docs.flutter.dev/data-and-backend/state-mgmt/options
 - BLoC Library: https://pub.dev/documentation/bloc/latest/
 - Firbase Cloud Firestore: https://firebase.google.com/docs/firestore
 - Firebase Cloud Storage: https://firebase.google.com/docs/storage
 
| System Block Diagram | Firestore Database Schema | 
|---|---|
![]()  | 
    ![]()  | 
  
| Project Files Structure | ||
|---|---|---|
![]()  | 
    ![]()  | 
    ![]()  | 
  
- bloc: https://pub.dev/packages/bloc
 - flutter_bloc: https://pub.dev/packages/flutter_bloc
 - fluttertoast: https://pub.dev/packages/fluttertoast
 - google_nav_bar: https://pub.dev/packages/google_nav_bar
 - line_icons: https://pub.dev/packages/line_icons
 - firebase_core: https://pub.dev/packages/firebase_core
 - cloud_firestore: https://pub.dev/packages/cloud_firestore
 - firebase_storage: https://pub.dev/packages/firebase_storage
 - image_picker: https://pub.dev/packages/image_picker
 - video_player: https://pub.dev/packages/video_player
 - carousel_slider: https://pub.dev/packages/carousel_slider
 - share_plus: https://pub.dev/packages/share_plus
 - flutter_secure_storage: https://pub.dev/packages/flutter_secure_storage
 - emoji_picker_flutter: https://pub.dev/packages/emoji_picker_flutter
 - crypto: https://pub.dev/packages/crypto
 - permission_handler: https://pub.dev/packages/permission_handler
 
dependencies:
  flutter:
    sdk: flutter
  bloc: ^8.1.2
  flutter_bloc: ^8.1.3
  cupertino_icons: ^1.0.2
  fluttertoast: ^8.2.2
  google_nav_bar: ^5.0.6
  line_icons: ^2.0.3
  firebase_core: ^2.15.0
  cloud_firestore: ^4.8.4
  firebase_storage: ^11.2.5
  image_picker: ^1.0.1
  video_player: ^2.3.8
  carousel_slider: ^4.2.1
  share_plus: ^7.2.2
  flutter_secure_storage: ^8.0.0
  emoji_picker_flutter: ^1.6.4
  crypto: ^3.0.3
  permission_handler: ^10.4.3
![]()  | 
    ![]()  | 
    ![]()  | 
    ![]()  | 
  |
![]()  | 
    ![]()  | 
    ![]()  | 
    ![]()  | 
    ![]()  | 
  
![]()  | 
    ![]()  | 
    ![]()  | 
  ||
  















