Chattin` is a Chat App made with Flutter for Android mobile devices. It is an attempt to learn more about the clean architecture, state management and other concepts in Flutter. It has a nice and easy to use interface along with some cool features which you can use to chat with your friends and family.
- Secure authentication
- One-to-one chat
- Getting chats contacts from your native contact app
- Sharing images within chats
- Uploading stories and updates
- Forwarding messages from one chat to other
- Deleting messages for yourself or for everyone
- Customizing your profile
- Little animations for improving user experience
For running the app on your local systems, firsly clone this repository and after you need to install and configure flutter. Properly set the environment variable according to your operating systems to ensure Flutter is installed properly before you proceed. Be sure you have Android/IOS simulator to run the application.
If you are on Windows/Linux install Android Studio and install XCode if you are using Mac. Mac users can have both Android Studio and XCode.
Link for downloading flutter
- https://docs.flutter.dev/get-started/install Link for Android Studio
- https://developer.android.com/studio Link for XCode
- https://developer.apple.com/xcode/
After you are done you need to configure your own firebase project for flutter. You can use the flutterfire cli which will help you to do the process quicker. Don't use the same firebase project I have used here.
Link to flutter fire
Install the required dependencies from the pubspec.yaml by using the following command
flutter pub get
Run the app by using the installed simulator
This application is entirely built with clean architecture. It uses go-router for smooth navigation with custom transitions. The Flutter BLoC and Provider are used for proper state management throughout the application.
- Frontend : Flutter, Dart
- Backend : firebase
- State Management : Flutter BLoC, Provider
- Routing : Go Router
Contributions are always welcomed 🙂. Anyone who wants to help me to improve the code quality or suggest ideas for better UI/performance are always welcomed by me.
This project was a personal journey to deepen my understanding of clean architecture and state management. While I’m aware that the application is still a work in progress—lacking features like notifications and other enhancements to elevate the user experience—it has already taught me invaluable lessons.
I acknowledge there are issues related to scalability and security that need addressing. However, my primary goal with this project was to master state management, clean architecture, and Flutter UI concepts as well, and I’m pleased with the progress I’ve made so far.
I’m always eager to learn and improve. If you have any ideas, suggestions, or feedback on how I can make this app better, I’d love to hear from you. Your input would be greatly appreciated!