My Chat App is a feature-rich, scalable messaging platform built using Kotlin for the frontend, Firebase for real-time database and authentication, and Ktor for efficient API development. Deployed on AWS Elastic Beanstalk, it integrates modern technologies and best practices to ensure high performance and scalability.
Key Features
Authentication
Secure login and registration with Firebase Authentication.
Real-time Messaging
Users can send audio, image, and text messages in real time using Firebase Realtime Database.
Profile Picture Updates
Users can easily change their profile pictures.
View User Information
Displays user profiles and online/offline status.
Online/Offline Status
Real-time indicators show whether users are online or offline.
Push Notifications
Users receive notifications for new messages and important updates through Firebase Cloud Messaging.
Message Status Indicators
Red Indicator: Message delivered but not seen.
Green Indicator: Message viewed.
Logout
Secure logout option to protect user data.
User Search
Enables users to search for others within the app.
Delete Messages
Users can delete messages from both the database and UI.
View Large Images
Users can view full-sized images.
Technologies Used
Kotlin
Used for building the Android frontend with modern, concise, and safe code.
Firebase:
Realtime Database: For real-time chat data syncing.
Firebase Storage: To store images, audio, and other files.
Authentication: For secure user access.
Cloud Messaging: To send notifications to users.
Ktor
A framework used for API development, enabling smooth communication between the client and server.
AWS Elastic Beanstalk
Used to deploy and manage backend services, ensuring scalability and stability.
Retrofit
A type-safe HTTP client for API requests, facilitating smooth communication between the app and server.
OOP Principles
Polymorphism is applied to handle different types of messages, enhancing code flexibility.
Dependency Injection
Tools like Dagger/Hilt are used to manage dependencies, ensuring maintainable and scalable code.
Coroutines
Kotlin Coroutines manage background tasks like sending messages or uploading files, providing a seamless user experience.
Credential Key Management
Secures authorization between the client and server, protecting sensitive data.
Best Practices Implemented
Clean Architecture
Organized codebase for maintainability and scalability.
Dependency Injection
Leveraging Dagger/Hilt to manage dependencies, improving code quality.
Asynchronous Programming
Non-blocking operations with Kotlin Coroutines ensure smooth UI performance.
Security
Proper credential management to protect sensitive user data.
Scalability
Designed to handle an increasing number of users and messages efficiently.