Skip to content

RTC (Real-Time Chat) is a real-time communication platform designed for users to chat and video conference in real-time. The app uses Firebase for authentication, Firestore for storing user and room data, and ZEGOCLOUD for video chat functionality.

Notifications You must be signed in to change notification settings

RahulRoyBXT/RTC---Real-Time-Chat

Repository files navigation

RTC---Real-Time-Chat

Introduction

RTC (Real-Time Chat) is a real-time communication platform designed for users to chat and video conference in real-time. The app uses Firebase for authentication, Firestore for storing user and room data, and ZEGOCLOUD for video chat functionality.

Features

  • User Authentication: Secure sign-in using Google with Firebase Authentication.
  • Real-Time Messaging: Instant messaging support with live updates.
  • Video Chat: High-quality group video calls powered by ZEGOCLOUD.
  • Interactive Whiteboard: A real-time whiteboard for collaboration during video calls.
  • Auto-Delete Previous Rooms: Rooms are automatically deleted after 5 hours using a
    hook, preventing clutter.

Installation

To set up and run the project locally, follow these steps:

  • Frontend: React, Tailwind CSS
  • Backend: Firebase (Authentication and Firestore)
  • Real-Time Communication: ZEGOCLOUD (GeoGo)
  • Build Tool: Vite
  • Password Hashing: bcrypt for securely hashing room passwords
  • Auto-Delete: Hook-based auto-deletion of room data after 5 hours
# Clone the repository
git clone https://github.com/RahulRoyBXT/RTC---Real-Time-Chat.git

# Navigate to the project directory
cd RTC---Real-Time-Chat

# Install dependencies
npm install

Usage

After starting the application, open your browser and navigate to http://localhost:5173. Register or log in with your credentials to start chatting.

Set up Firebase:

Create a Firebase project via the Firebase Console.

  • Set up Firebase Authentication and enable Google sign-in.
  • Create a Firestore database to store user and room data.
  • Add Firebase credentials (apiKey, authDomain, projectId, storageBucket, etc.) to your project configuration.

Set up ZEGOCLOUD:

  • Register for an account at ZEGOCLOUD.
  • Obtain your App ID and App Key from the ZEGOCLOUD dashboard.
  • Integrate these credentials into your project for video calling functionality.
# Install bcrypt for hashing room passwords:
npm install bcrypt
# Start the development server:
npm run dev

Usage

  • Sign-In: Users can sign in using their Google account via Firebase Authentication.
  • Room Creation/Joining: Users can create a new room or join an existing room using a password.
  • Chat: Users can send messages in real-time with instant delivery.
  • Video Calling: Users can initiate or join group video calls.

Security

Authentication and Authorization

  • Firebase Authentication is used to authenticate users via Google login. This ensures that users can securely log in without exposing passwords or other sensitive information.

  • Firebase Security Rules are implemented to restrict access to Firestore collections based on authentication status. Only authenticated users can read/write to the database.

Example Firestore rules:

service cloud.firestore {
  match /databases/{database}/documents {
    match /rooms/{roomId} {
      allow read, write: if request.auth != null;
    }
  }
}

This allows only authenticated users to read and write to Firestore, preventing unauthorized access to sensitive data like room passwords.

Future Enhancements

  • Message Encryption: Implement end-to-end encryption for chat messages to prevent unauthorized reading.
  • UI/UX Improvements: Work on the visual interface to improve the user experience and make it more intuitive.

Contributing

We welcome contributions from the community. To contribute, please follow these steps:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature-branch)
  3. Make your changes
  4. Commit your changes (git commit -m 'Add feature')
  5. Push to the branch (git push origin feature-branch)
  6. Create a pull request

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contact

For any questions or inquiries, please contact Rahul Roy at rahulroy.it2021@nsec.ac.in.

About

RTC (Real-Time Chat) is a real-time communication platform designed for users to chat and video conference in real-time. The app uses Firebase for authentication, Firestore for storing user and room data, and ZEGOCLOUD for video chat functionality.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published