Skip to content

navaneethkrishna30/WhisperZone

Repository files navigation

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
Stars Forks Issues Open Pull Requests Close Pull Requests GitHub language count

(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.

Features

  • Real-time communication using WebSockets via Flask-SocketIO.
  • Room-based chat system with dynamically generated room codes.
  • In-memory chat storage using Redis and persistent chat history saved in MongoDB.
  • Dockerized setup with Redis, MongoDB, Flask backend, and React frontend running in containers.

Prerequisites

Ensure you have the following installed:

Getting Started

Clone the Repository

git clone https://github.com/navaneethkrishna30/WhisperZone.git
cd WhisperZone

Setup for Local Development

This project uses Docker Compose to manage Redis, MongoDB.

  1. Build and start the services:

    docker compose -f compose.dev.yaml up

    For development purposes, Redis has been exposed at Port 6379 and Mongo at Port 27017

  2. Backend:

    flask run

    The backend will be running and would be available at Port 5000

  3. Frontend:

    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, install the packages and run start the dev server:

    cd frontend
    npm install
    npm run dev

    The frontend will now be available at http://localhost:5173.


Running the App using Docker Compose

There is a Docker Compose file which runs all the services in just like in the Production. It is advised to run this before submitting a Pull Request.

docker compose -f compose.local.yaml up --build

The app is accessible through port 5173

Contributing

We welcome contributions from the community. To get started:

  1. Fork the repository. You can do this by clicking the Fork button on the top right of the repository page.

  2. Create a feature branch:

    git checkout -b feature/my-feature
  3. Make your changes.

  4. Run tests locally to ensure everything works as expected.

  5. Commit your changes with a descriptive message:

    git commit -m "Add feature: description of your feature"
  6. Push the changes to your fork:

    git push origin feature/my-feature
  7. Submit a pull request:

    • Go to the original repository on GitHub.
    • Click on the "Pull Requests" tab.
    • Click the "New Pull Request" button.
    • Select your feature branch and submit the pull request.
  8. Wait for review and feedback.

    • Address any comments or requested changes.
    • Once approved, your feature will be merged into the main branch.

Contributors

Thanks to the following people who have contributed to this project:

yashksaini-coder
Yash Kumar Saini
navaneethkrishna30
Navaneeth Krishna
Prithwi32
Prithwi Hegde
rishi-harti768
rishi-harti768

Reporting Issues

If you encounter any bugs or have suggestions for improvements, please open an issue on GitHub.