ChatFlow is a modern and user-friendly real-time messaging application. Built with Flutter framework, it provides seamless functionality across both iOS and Android platforms.
lib/
βββ core/
β βββ base/
β β βββ model/ # Base model interfaces
β β βββ view/ # Base view classes
β βββ bloc/ # Global BLoC states
β βββ constants/ # App constants
β βββ init/
β β βββ network/ # Network layer management
β β βββ cache/ # Local storage management
β β βββ notification/ # Push notification setup
β β βββ theme/ # App theme configuration
β βββ models/ # Data models
β βββ service/ # API services
βββ feature/
β βββ auth/ # Authentication feature
β β βββ login/
β β βββ register/
β βββ chat/ # Chat feature
β βββ home/ # Home feature
β βββ profile/ # Profile feature
βββ main.dart
The project includes a robust network layer implementation with the following features:
- Singleton pattern for network operations
- Generic response handling
- Type-safe API calls
- Automatic error handling
Future<R?> send<T extends INetworkModel<T>, R>({
required String path,
required RequestType type,
required T parseModel,
Map<String, dynamic>? queryParameters,
Map<String, dynamic>? data,
})- Generic base model for all network responses
- Type-safe JSON parsing
abstract class INetworkModel<T> {
T fromJson(Map<String, dynamic> json);
Map<String, dynamic> toJson();
}Example service implementation showing CRUD operations:
abstract class IPostService {
Future<List<PostModel>?> getPosts();
Future<PostModel?> getPost(int id);
Future<PostModel?> createPost(String title, String body, int userId);
Future<PostModel?> updatePost(int id, String title, String body);
Future<bool> deletePost(int id);
}- Secure session management with JWT
- User registration and login
- Secure password storage
- Instant messaging with Firebase Realtime Database
- Typing indicators
- Message read/unread status
- Last seen feature
- Firebase Cloud Messaging (FCM) integration
- Customizable notification settings
- In-app notification management
- Profile creation and editing
- Profile picture upload with Firebase Storage
- User settings management
- Clean Architecture principles
- State management with BLoC pattern
- Firebase services integration
- Comprehensive error handling
- Unit and widget tests
- Generic network layer
- Type-safe API calls
-
Prerequisites:
- Flutter SDK (latest version)
- Dart SDK (latest version)
- Android Studio / VS Code
- Firebase account
-
Clone the project:
git clone [repo-url] cd chat_flow -
Install dependencies:
flutter pub get
-
Configure Firebase:
- Add your
google-services.jsonfor Android - Add your
GoogleService-Info.plistfor iOS
- Add your
-
Run the app:
flutter run
Run tests using:
flutter testFor detailed documentation about the implementation:
- iOS 11.0 and above
- Android 5.0 (API level 21) and above
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
screenshots/
βββ login.png
βββ chat_list.png
βββ chat_detail.png
βββ profile.png
Note: Please add your application screenshots to the screenshots directory following the structure above.





