A modern Flutter-based chat application featuring real-time messaging, user authentication, search functionality, and customizable themes. Built with clean architecture principles for scalability and maintainability.
- User Authentication: Secure login and registration system
- Real-time Chat: Instant messaging with message history
- User Search: Find and connect with other users
- Theme Support: Light and dark theme modes with persistence
- Internationalization: Support for English and Vietnamese languages
- Responsive Design: Optimized for multiple platforms (iOS, Android, Web, Desktop)
- Flutter: Cross-platform UI framework (SDK ^3.10.1)
- Bloc: Business logic component pattern for predictable state management
- Flutter Bloc: Flutter integration for Bloc
- GetIt: Service locator for dependency injection
- HTTP: Package for making HTTP requests
- Go Router: Declarative routing for Flutter
- Shared Preferences: Local data persistence
- Flutter SVG: SVG image support
- Lottie: Animation library
- Cupertino Icons: iOS-style icons
- Timeago: Human-readable time formatting
- Equatable: Value equality for Dart objects
- Dartz: Functional programming helpers
- Easy Localization: Internationalization support
- Collection: Enhanced collection data structures
This project follows a clean architecture approach with feature-based organization:
lib/
├── main.dart # Application entry point
└── src/
├── app.dart # Root widget and app configuration
├── app_injection.dart # Dependency injection setup
├── core/ # Core utilities and configurations
│ ├── bloc/ # Base BLoC classes
│ ├── i18n/ # Internationalization
│ ├── router/ # App routing configuration
│ ├── theme/ # Theme definitions
│ └── utils/ # Utility functions
├── features/ # Feature modules
│ ├── auth/ # Authentication feature
│ ├── chats/ # Chat functionality
│ ├── search/ # User search
│ └── setting/ # App settings
└── shared/ # Shared components
├── data/ # Data layer (repositories, data sources)
├── domain/ # Domain layer (entities, use cases)
└── presentation/ # Shared presentation components
The app implements Clean Architecture with three main layers:
- Widgets and UI components
- BLoC pattern for state management
- Event-driven UI updates
- Business logic entities
- Use cases (application logic)
- Repository interfaces
- Repository implementations
- Data sources (API, local storage)
- Data models and mappers
- Flutter SDK (^3.10.1)
- Dart SDK (included with Flutter)
-
Clone the repository:
git clone https://github.com/Dangtruong-DUT/chat_app.git cd chat_app -
Install dependencies:
flutter pub get
-
Run the app:
flutter run
flutter build apkflutter build iosflutter build webThe app uses environment-specific configurations defined in pubspec.yaml.
Static assets are organized in the assets/ directory:
svg/: Vector graphicsimages/common/: Common UI imagesimages/chats/: Chat-related imageslotties/: Animation filestranslations/: Localization files
Translation files are located in assets/translations/ and support English (en) and Vietnamese (vi).
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Current Date and Time (UTC - YYYY-MM-DD HH:MM:SS formatted): 2025-12-29 05:45:03 Current User's Login: Dangtruong-DUT