Chatify is a real-time chat application built using React.js for the frontend and Node.js, Express.js with Socket.IO for the backend server, allowing users to engage in instant messaging.
The project is structured into two main folders:
- frontend: Contains the React application for the user interface.
- server: Contains the Node.js server implementing Socket.IO for real-time messaging.
- Real-time Messaging: Instantly send and receive messages.
- Multi-User Chat : Multiple users can login and chat.
- Responsive Design: Works seamlessly across devices.
- LAN Hosting: Connect and chat with others on the same network.
- End-to-End Encryption: Messages are encrypted using an RSA + AES-CBC hybrid scheme, making traffic unreadable in transit.
-
Frontend:
- React.js
- CSS3
-
Backend:
- Node.js
- Express.js
- Socket.IO
- node-forge (AES + RSA encryption)
To run this project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/AtharvaKulkarniIT/Chatify.git
-
Navigate to the frontend directory:
cd Chatify/frontend -
Install frontend dependencies:
npm install
-
Navigate to the server directory:
cd ../server -
Install server dependencies:
npm install
To start the frontend and backend servers:
-
Open a new terminal and navigate to the frontend directory:
cd Chatify/frontend -
Start the frontend server:
npm start
-
Open your browser and navigate to:
http://localhost:3001Open at least two tabs to simulate a chat room environment.
-
Open another terminal and navigate to the server directory:
cd Chatify/server -
Start the backend server:
npm start
- Enter your unique username in each tab and start chatting.
- Messages are displayed in real-time with different styles for your messages and others'.
This branch implements end-to-end encryption using a RSA + AES-CBC hybrid scheme:
- On connection, the server shares its RSA public key with each client
- Each client generates a random AES key, encrypts it with the server's public key, and sends it back
- All chat messages are encrypted with AES before being sent and decrypted on arrival
- The server never processes plaintext messages
A standalone browser-based tool is included at encryption-checker.html. Open it in any browser, enter your server IP and port, and send a message in the chat app to audit whether traffic is encrypted or plaintext. No installation required.
Contributions are welcome! Fork the repository and submit a pull request for any features or fixes.
This project is licensed under the MIT License - see the LICENSE file for details.
- AtharvaKulkarniIT — original author
- jayyant & ismail — LAN hosting, end-to-end encryption, encryption checker tool