A real-time, end-to-end encrypted chat application built with Flask, Socket.IO, and React. This project aims to provide end to end encryption in order to create secure and private communication channels.
- 🔒 End-to-End Encryption: Messages are encrypted using a custom ECC implementation.
- 💬 Real-Time Chat: Built with Flask-SocketIO and React for instant messaging.
- 👥 Private Rooms: Users can create and join private chat rooms.
- ⚡ Modern Frontend: Built with React, TypeScript, TailwindCSS, Shadcn, Socket.io and React Router.
- 🐍 Python Backend: Flask API with flask-socketio for real-time communication.
ECC_ChatApp/
│
├── backend/ # Flask backend with Socket.IO and ECC logic
│ ├── main.py # Main Flask app and Socket.IO event handlers
│ ├── Message.py # Message model/logic
│ ├── requirements.txt
│ └── .venv/ # Python virtual environment
│
├── frontend/ # React frontend
│ ├── app/ # Main app code (components, routes, etc.)
│ │ ├── components/
│ │ │ ├── PrivateMessaging/ # Chat room creation/joining
│ │ │ └── ui/ # Reusable UI components (Shadcn)
│ │ ├── routes/ # Route components (chat, home, etc.)
│ │ └── root.tsx # App root
│ ├── public/
│ ├── package.json
│ ├── Dockerfile
│ └── README.md
│
├── README.md # (You are here)
└── logs.md # Project logs/notes
-
Install dependencies:
cd backend python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
-
Run the server:
python3 main.py
The backend will start on
http://localhost:5001. (Note: please note backend URL for frontend)
-
Install dependencies:
cd frontend echo 'VITE_BACKEND_URL=<YOUR_BACKEND_URL>' > .env npm install
-
Start the development server:
npm run dev
The frontend will be available at
http://localhost:5173| <Your Specified URL>.
- Python, Flask, Flask-SocketIO
- CORS for cross-origin requests
- (Planned) Custom ECC implementation for encryption
- React, TypeScript, React Router
- TailwindCSS for styling
- socket.io-client for real-time communication
This project will feature a custom implementation of Elliptic Curve Cryptography (ECC) for secure, end-to-end encrypted messaging. The ECC logic will be implemented from scratch in the backend and integrated into the chat workflow.
- Fork the repo
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin feature/YourFeature) - Open a pull request
Let me know if you want to add usage examples, API details, or more about the ECC implementation!