A real-time chat application that allows users to register, sign in, manage contacts, send messages, and more. The application is designed to provide a seamless messaging experience with various features and functionalities.
- Users can register for the application using a valid phone number.
- Registration includes fields for phone number, display name, email, picture, password, confirmation password, gender, country, date of birth, and bio.
- Users can update their profile after registration.
- Upon running the application, users are prompted to register their phone number.
- If the user skips this step, the application will close.
- After entering a valid phone number, users are prompted to enter their password.
- Users can enter contact phone numbers.
- Contacts receive invitations to accept or reject.
- If an invitation is pending and the contact user also adds the user, the invitation is automatically accepted (Bonus).
- Contacts' status is displayed as online or offline.
- Online contacts can be classified as Available, Busy, or Away.
- Users can set their status to Available, Busy, or Away.
- Users can appear offline (Bonus).
- Users receive notifications when a contact becomes online/offline or updates their status.
- Users receive notifications when they receive messages.
- Ability to conduct one-to-one chat.
- Ability to conduct group chat (more than two contacts).
- Messages include attributes such as message, font style, font color, text background, font size, bold, italic, underline, and timestamp.
- Users can send messages to offline contacts.
- When a contact logs in, they receive all messages sent while they were offline.
- Ability to transfer files to contacts (text, sound, short video, long movie, etc.).
- Users can sign out from the application.
- The application forgets the user's password but retains their ID for signing in again by password only.
- Ability to exit the application without forgetting the user's information, allowing for direct reopening without signing in again.
- Users can enable a chatbot to automatically answer on their behalf.
- Ability to start/stop the service on the server.
- Allow users to sign up (i.e., registration of first-time users).
- Accept connections and keep track of clients' status.
- Ability to send an announcement message (formatted text message) to all online users.
- View the number of online and offline users.
- Show statistics about users' gender.
- Show statistics about users' country.
- Show statistics about users' entries number on the system (Bonus).
- Maintain the user's contact list for seamless sign-in from any machine without re-creating the contact list.
To get started with the chat application, follow these steps:
- Clone the repository.
- Install the required dependencies.
- Run the application.
- Register for the application using a valid phone number.
- Sign in with your registered phone number and password.
- Manage contacts, update profiles, set status, and send messages.
- Enjoy seamless messaging with friends and contacts.
This project is part of the ITI Internship.