Baatchit is a modern real-time chat application designed to facilitate seamless communication between users. With Baatchit, users can engage in conversations, share files, see when others are typing, and more, all in real-time.
- 🔒 End-to-End Encryption: Ensure your private chats are secure with advanced encryption, protecting your messages from unauthorized access.
- 🔑 Private Key Recovery: Recover your private encryption key securely through a password-protected and MFA email verification process, ensuring you never lose access to your encrypted messages.
- 📲 Push Notifications: Stay updated with instant push notifications, ensuring you never miss a message even when the app is closed.
- 💬 Real-time Messaging: Instantly send and receive messages with other users.
- 🤝 Friends Feature: Connect with other users and engage in private chats or group conversations after adding them as friends.
- 👥 Group Chats: Create and participate in group chats with multiple users.
- 🟢 User Presence: See who's online and available for chat in real-time.
- ⌨️ Typing Indicators: See when other users are typing to enhance communication flow.
- ✔️ Message Seen Status: Know when your messages have been seen by other users.
- ✏️ Edit Messages: Edit your messages in real-time, with updates reflected instantly for all users and an indication that the message has been edited.
- 🗑️ Delete Message: Delete messages after sending them ensuring full control over your conversation
- 📁 File Sharing: Share files and documents securely within chats.
- 🎉 GIF Sending: Express yourself with animated GIFs using the integrated Tenor GIF library.
- 📊 Polling: Send polls with either multiple votes set to true or false, allowing users to gather opinions and feedback.
- 🔒 OAuth Integration: Sign in easily using social login options like GitHub and Google.
- ⚛️ React: A JavaScript library for building user interfaces.
- 🔗 React Router: Declarative routing for React applications.
- 🛠️ Redux Toolkit: An opinionated, batteries-included toolset for efficient Redux development.
- 🔄 Socket.IO Client: Real-time bidirectional event-based communication library for web applications.
- 📑 React Hook Form: Performant, flexible and extensible forms with easy-to-use validation.
- 📝 Zod: A TypeScript-first schema declaration and validation library.
- 🎥 Framer Motion: A production-ready motion library for React.
- 🎬 Lottie React: Render After Effects animations on React-based web apps.
- 🖼️ Gif Picker React: Provides a simple and easy-to-use UI for selecting GIFs.
- 🔔 React Hot Toast: Toast notifications for React applications.
- 🟢 Node.js: A JavaScript runtime built on Chrome's V8 JavaScript engine.
- 🌐 Express: Fast, unopinionated, minimalist web framework for Node.js.
- 🔄 Socket.IO: Real-time bidirectional event-based communication library for Node.js.
- 📂 MongoDB (with Mongoose): A NoSQL database for storing application data.
- 🔒 Bcryptjs: Library for hashing passwords.
- ☁️ Cloudinary: Cloud-based image and video management service.
- 🔓 Cors: Middleware for handling Cross-Origin Resource Sharing (CORS).
- 🔧 Dotenv: Module to load environment variables from a
.env
file. - 🛡️ Helmet: Middleware to secure Express apps by setting various HTTP headers.
- 🔐 Jsonwebtoken: Library to create and verify JSON Web Tokens (JWTs).
- 📈 Morgan: HTTP request logger middleware for Node.js.
- 📤 Multer: Middleware for handling
multipart/form-data
, primarily used for file uploads. - 📧 Nodemailer: Module for sending emails from Node.js applications.
- 🔑 Passport: Authentication middleware for Node.js.
- 🐙 Passport-Github2: Passport strategy for authenticating with GitHub using OAuth 2.0.
- 🔍 Passport-Google-Oauth20: Passport strategy for authenticating with Google using OAuth 2.0.
- 🔢 UUID: Library for generating universally unique identifiers (UUIDs).
To get started with Baatchit, follow these steps:
- Clone the repository:
git clone https://github.com/RishiBakshii/Baatchit
- Navigate to the project directory:
cd Baatchit
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Visit
http://localhost:5173
in your browser to access the application.
Both the frontend and backend have a .env.example
file provided. Follow these steps to set up the environment variables:
- Copy the provided
.env.example
file to create your own.env
file: - Open the
.env
file and replace the placeholder values with your actual credentials and secrets.
This ensures that both the frontend and backend applications have the necessary configurations for seamless operation.
Contributions are welcome! If you'd like to contribute to Baatchit, please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature-name
- Make your changes and commit them:
git commit -am 'Add new feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request.
For any inquiries or feedback, please contact me at rishibakshiofficial@gmail.com.