Skip to content

AtharvaKulkarniIT/Chatify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

Chatify

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.

Project Structure

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.

Features

  • 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.

Technologies Used

  • Frontend:

    • React.js
    • CSS3
  • Backend:

    • Node.js
    • Express.js
    • Socket.IO
    • node-forge (AES + RSA encryption)

Installation

To run this project locally, follow these steps:

  1. Clone the repository:

    git clone https://github.com/AtharvaKulkarniIT/Chatify.git
  2. Navigate to the frontend directory:

    cd Chatify/frontend
  3. Install frontend dependencies:

    npm install
  4. Navigate to the server directory:

    cd ../server
  5. Install server dependencies:

    npm install

Running the Application

To start the frontend and backend servers:

Frontend

  1. Open a new terminal and navigate to the frontend directory:

    cd Chatify/frontend
  2. Start the frontend server:

    npm start
  3. Open your browser and navigate to:

    http://localhost:3001
    

    Open at least two tabs to simulate a chat room environment.

Backend

  1. Open another terminal and navigate to the server directory:

    cd Chatify/server
  2. Start the backend server:

    npm start

Usage

  • Enter your unique username in each tab and start chatting.
  • Messages are displayed in real-time with different styles for your messages and others'.

Encryption

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

Encryption Checker

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.

UI

Login Login

Chat page Real-time chat

Contributing

Contributions are welcome! Fork the repository and submit a pull request for any features or fixes.

License

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

Acknowledgements

About

Chatify is a real-time chat application built with React, Express and Socket.IO, facilitating seamless instant messaging with user login and responsive design.

Topics

Resources

License

Stars

Watchers

Forks

Contributors