https://github.com/rahulroybxt/rtc---real-time-chat
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.
https://github.com/rahulroybxt/rtc---real-time-chat
firebase reactjs tailwindcss zegocloud
Last synced: 3 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/rahulroybxt/rtc---real-time-chat
- Owner: RahulRoyBXT
- Created: 2024-10-26T17:55:21.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-16T09:36:31.000Z (over 1 year ago)
- Last Synced: 2025-07-31T16:42:21.188Z (11 months ago)
- Topics: firebase, reactjs, tailwindcss, zegocloud
- Language: JavaScript
- Homepage: https://rtc-realtimechat.netlify.app/
- Size: 268 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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
```bash
# 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.
```bash
# 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:
```bash
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](mailto:rahulroy.it2021@nsec.ac.in).