A real-time chat application using Flask, Redis, MongoDB, Flask-SocketIO, and a React frontend powered by Vite.
WhisperZone
A real-time chat application using Flask, Redis, MongoDB, Flask-SocketIO, and a React frontend powered by Vite. This application supports room-based chats with Redis for in-memory message storage and MongoDB for persistent chat history. This project began as a demo for practicing DevOps and has now been made public for Hacktoberfest. Contributions and feature suggestions are welcome!
🌟 Stars | 🍴 Forks | 🐛 Issues | 🔔 Open PRs | 🔕 Close PRs | 🛠️ Languages |
(Hacktoberfest) I'm open to new feature ideas! If you have any cool features you'd like to implement, open an issue, and I'll assign it to you so you can start working on it.
Ensure you have the following installed:
git clone https://github.com/navaneethkrishna30/WhisperZone.git
cd WhisperZone
Create a .env
file in the project root and define the following secrets:
REDIS_PASSWORD=your_redis_password
MONGO_INITDB_ROOT_USERNAME=your_mongo_username
MONGO_INITDB_ROOT_PASSWORD=your_mongo_password
This project uses Docker Compose to manage services (backend, Redis, MongoDB).
Build and start the services:
docker-compose up --build
This will start the backend, Redis, and MongoDB in their respective containers. The backend will be exposed on port 5000
.
Access the application:
http://localhost:5000
.The frontend is built using Vite and React, located in the frontend/
directory.
To run the frontend locally (without Docker), follow these steps:
Navigate to the frontend/
directory:
cd frontend
Install dependencies:
npm install
Start the development server:
npm run dev
The frontend will now be available at http://localhost:5173
.
The application includes integration tests for Redis, MongoDB, and API routes. To run the tests:
Ensure Docker secrets are set for testing (e.g., REDIS_PASSWORD
, MONGO_USER
, MONGO_PASSWORD
).
Run the tests:
docker-compose -f compose-test.yaml up --build --abort-on-container-exit
This will start the backend in test mode and automatically run the tests.
The application is divided into the following services:
Backend:
Redis:
MongoDB:
We welcome contributions from the community. To get started:
Fork the repository. You can do this by clicking the Fork button on the top right of the repository page.
Create a feature branch:
git checkout -b feature/my-feature
Make your changes.
Run tests locally to ensure everything works as expected.
Commit your changes with a descriptive message:
git commit -m "Add feature: description of your feature"
Push the changes to your fork:
git push origin feature/my-feature
Submit a pull request:
Wait for review and feedback.
For local backend development without Docker, follow these steps:
Create a virtual environment and activate it:
python -m venv venv
source venv/bin/activate # For Windows: venv\Scripts\activate
Install dependencies:
pip install -r requirements.txt
Set environment variables for Redis and MongoDB:
export REDIS_PASSWORD=your_redis_password
export MONGO_INITDB_ROOT_USERNAME=your_mongo_username
export MONGO_INITDB_ROOT_PASSWORD=your_mongo_password
Start the Flask app:
flask run
The backend will now run locally at http://localhost:5000
.
Thanks to the following people who have contributed to this project:
Navaneeth Krishna |
Yash Kumar Saini |
If you encounter any bugs or have suggestions for improvements, please open an issue on GitHub.