This project implements a robust chat system designed to support real-time messaging across various applications. Each application registered in the system can have multiple chats, and each chat can contain numerous messages.
- Application Management: Users can create applications, each identified by a unique token.
- Chat Functionality: Each application can host numerous chats, with chats uniquely numbered within their respective applications.
- Message Handling: Chats support the addition of messages, which are also uniquely numbered within their respective chats.
- Search Capability: Includes the ability to search through messages within a chat based on partial text matching, utilizing Elasticsearch for efficient search operations.
- Count Tracking: Tracks the number of chats and messages within each application and chat, respectively, updated with minimal lag.
- Concurrency and Scalability: Designed to handle multiple requests concurrently without direct database writes during request processing, using queues to manage data flow.
- Containerization: Fully containerized with Docker, allowing for easy setup and deployment using Docker Compose.
Before you begin, ensure you have met the following requirements:
- You have installed Docker and Docker Compose.
To install Unlimited Talk, follow these steps:
git clone https://github.com/Ahmed-Abdelhafez98/Unlimited-Talk.git
cd Unlimited-Talk
sh ./install.sh
This project includes a comprehensive Postman collection containing all available API endpoints.
https://api.postman.com/collections/16343939-47b912ef-acaf-4949-807f-571b30e7c9af?access_key=PMAT-01HW26EBHGMCZBGXS3K30819SJ
Import the collection from the Import
button at the top left corner of the Postman window.
Here's a brief intro about how to use Project Name:
- Start the server:
docker-compose up
-
Access the application at
http://localhost:3000
. -
To stop the application:
docker-compose down
To run tests, use the following command:
docker-compose exec app bundle exec rspec
To contribute to Unlimited Talk, follow these steps:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name>
. - Make your changes and commit them:
git commit -m '<commit_message>'
- Push to the original branch:
git push origin Unlimited-Talk/<location>
- Create the pull request.
If you want to contact me you can reach me at [email protected].