Skip to content

A chat app in MERN, Websocket, one can create a group chat or chat individually.

Notifications You must be signed in to change notification settings

abhissh11/webuzz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

# Webuzz πŸš€

A real-time chat application built with MERN stack and Websockets.

Connect with friends and colleagues through group chats or individual conversations.

![License](https://img.shields.io/github/license/abhissh11/webuzz)
![GitHub stars](https://img.shields.io/github/stars/abhissh11/webuzz?style=social)
![GitHub forks](https://img.shields.io/github/forks/abhissh11/webuzz?style=social)
![GitHub issues](https://img.shields.io/github/issues/abhissh11/webuzz)
![GitHub pull requests](https://img.shields.io/github/issues-pr/abhissh11/webuzz)
![GitHub last commit](https://img.shields.io/github/last-commit/abhissh11/webuzz)

<p align="left">
  <a href="https://www.javascript.com/" alt="javascript">
    <img src="https://img.shields.io/badge/JavaScript-%23F7DF1E.svg?style=for-the-badge&logo=javascript&logoColor=black" />
  </a>
  <a href="https://reactjs.org/" alt="react">
    <img src="https://img.shields.io/badge/React-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB" />
  </a>
  <a href="https://nodejs.org/en/" alt="node.js">
    <img src="https://img.shields.io/badge/Node.js-%2343853D.svg?style=for-the-badge&logo=node.js&logoColor=white" />
  </a>
  <a href="https://expressjs.com/" alt="express.js">
    <img src="https://img.shields.io/badge/Express.js-%23000000.svg?style=for-the-badge&logo=express&logoColor=%23fff" />
  </a>
  <a href="https://www.mongodb.com/" alt="mongodb">
    <img src="https://img.shields.io/badge/MongoDB-%234EA94B.svg?style=for-the-badge&logo=mongodb&logoColor=white" />
  </a>
  <a href="https://socket.io/" alt="socket.io">
    <img src="https://img.shields.io/badge/Socket.io-%23010101.svg?style=for-the-badge&logo=socket.io&logoColor=white" />
  </a>
</p>

## πŸ“‹ Table of Contents

- [About](#about)
- [Features](#features)
- [Demo](#demo)
- [Quick Start](#quick-start)
- [Installation](#installation)
- [Usage](#usage)
- [Configuration](#configuration)
- [Project Structure](#project-structure)
- [Contributing](#contributing)
- [Testing](#testing)
- [Deployment](#deployment)
- [License](#license)
- [Support](#support)
- [Acknowledgments](#acknowledgments)

## About

Webuzz is a modern chat application built using the MERN stack (MongoDB, Express.js, React.js, Node.js) and Websockets for real-time communication. It allows users to engage in both individual and group chats, providing a seamless and interactive messaging experience.

This project addresses the need for a simple yet powerful chat application that can be used for personal or professional communication. It targets individuals, teams, and communities looking for a platform to connect and collaborate in real-time.

Webuzz leverages the MERN stack to create a scalable and maintainable application. React.js handles the front-end user interface, Node.js and Express.js power the back-end server, MongoDB stores the application data, and Websockets facilitate real-time messaging. The application offers a responsive design, ensuring a consistent experience across different devices.

## ✨ Features

- 🎯 **Individual and Group Chats**: Engage in one-on-one conversations or create group chats for collaborative discussions.
- ⚑ **Real-time Messaging**: Instant message delivery powered by Websockets.
- πŸ”’ **User Authentication**: Secure user registration and login with password hashing.
- 🎨 **Responsive UI**: User-friendly interface that adapts to different screen sizes.
- πŸ› οΈ **Easy Setup**: Simple installation and configuration process.

## 🎬 Demo

πŸ”— **Live Demo**: [https://webuzz-demo.example.com](https://webuzz-demo.example.com)

### Screenshots
![Chat Interface](screenshots/chat-interface.png)
*Main chat interface showcasing individual and group conversations.*

![Group Creation](screenshots/group-creation.png)
*Group creation form for creating new chat groups.*

## πŸš€ Quick Start

Clone and run in 3 steps:

```bash
git clone https://github.com/abhissh11/webuzz.git
cd webuzz
npm install && npm start

Open http://localhost:3000 to view it in your browser.

πŸ“¦ Installation

Prerequisites

  • Node.js 18+ and npm
  • MongoDB installed and running
  • Git

Steps

  1. Clone the repository:
git clone https://github.com/abhissh11/webuzz.git
cd webuzz
  1. Install dependencies:
npm install
  1. Configure environment variables (see Configuration):

  2. Start the application:

npm start

πŸ’» Usage

Basic Usage

  1. Open your web browser and navigate to http://localhost:3000.
  2. Register a new account or log in with an existing account.
  3. Start chatting with other users or create a new group chat.

Creating a Group Chat

  1. Click on the "Create Group" button.
  2. Enter the group name and select the users you want to add to the group.
  3. Click "Create" to create the group chat.

βš™οΈ Configuration

Environment Variables

Create a .env file in the root directory based on the .env.example file.

PORT=5000
MONGO_URI=mongodb://localhost:27017/webuzz
JWT_SECRET=your_jwt_secret
  • PORT: The port the server will listen on (default: 5000).
  • MONGO_URI: The connection string for your MongoDB database.
  • JWT_SECRET: A secret key used for signing JSON Web Tokens (JWT) for authentication.

πŸ“ Project Structure

webuzz/
β”œβ”€β”€ client/             # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # React components
β”‚   β”‚   β”œβ”€β”€ pages/            # Application pages
β”‚   β”‚   β”œβ”€β”€ App.js            # Main application component
β”‚   β”‚   └── index.js          # Entry point
β”‚   β”œβ”€β”€ public/           # Static assets
β”‚   β”œβ”€β”€ package.json      # Frontend dependencies
β”‚   └── ...
β”œβ”€β”€ server/             # Node.js/Express backend
β”‚   β”œβ”€β”€ models/           # Mongoose models
β”‚   β”œβ”€β”€ routes/           # API routes
β”‚   β”œβ”€β”€ config/           # Configuration files
β”‚   β”œβ”€β”€ controllers/      # Route handlers
β”‚   β”œβ”€β”€ server.js         # Main server file
β”‚   β”œβ”€β”€ package.json      # Backend dependencies
β”‚   └── ...
β”œβ”€β”€ .env                # Environment variables
β”œβ”€β”€ .gitignore          # Git ignore file
β”œβ”€β”€ README.md           # Project documentation
└── LICENSE             # License file

🀝 Contributing

We welcome contributions! Please see our Contributing Guide (create this file) for details.

Quick Contribution Steps

  1. 🍴 Fork the repository
  2. 🌟 Create your feature branch (git checkout -b feature/AmazingFeature)
  3. βœ… Commit your changes (git commit -m 'Add some AmazingFeature')
  4. πŸ“€ Push to the branch (git push origin feature/AmazingFeature)
  5. πŸ”ƒ Open a Pull Request

Testing

To run tests, use the following command:

npm test

(Note: Configure tests in client and server directories)

Deployment

Heroku

  1. Create a Heroku app.
  2. Connect your GitHub repository to your Heroku app.
  3. Configure environment variables in Heroku settings.
  4. Deploy the application.

Docker

  1. Create a Dockerfile for both the client and server.
  2. Build the Docker images.
  3. Run the Docker containers.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • πŸ“š Libraries used:
    • React - For building the user interface
    • Node.js - For the server-side runtime environment
    • Express.js - For building the API
    • MongoDB - For the database
    • Socket.IO - For real-time communication
  • πŸ‘₯ Contributors: Thanks to all contributors

About

A chat app in MERN, Websocket, one can create a group chat or chat individually.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published