DISCLAIMER: This app is currently a WIP. Do NOT use it yet for communicating anything which you wouldn't want to be intercepted in the network.
Balvan Chat is a server/client self-hosted desktop chat application. It ensures secure communication with direct connections to the server's IP address, eliminating any middlemen. With complete end-to-end encryption (E2E) using AES-128, your data remains private and secure, encrypted with a passphrase known only to the chat participants.
- Complete End-to-End Encryption: Utilizes Fernet (AES-128) for robust security.
- Secure Passphrase: The password is never stored within the app; participants must agree on a passphrase via an external method, e.g., in person. The same is done for the salt.
- User-Friendly Interface: Built with PyWebView and HTMX, with Flask in the background, for easy interaction.
- Customizable Usernames: Allows users to choose their display names.
- Server-Client Architecture: Supports multiple clients connecting to the server.
- Start a Server: Choose Start Server -> Supply with chosen Salt, Password and Name (Nick). Give Salt, Password and your IP to clients...
- Connect to a Server: Choose Start Server -> Enter your Nick and supply the credentials you got from the host.
Note: When starting a server, your local IP address is displayed in the chat. You will need to provide your external IP address to clients, which can be found by searching "what is my IP" online.
Note: If a connection cannot be established, ensure port 15500 is open on your router.
Head to Releases for a pre-packaged windows binary. There are no prebuilt binaries for Linux at the moment.
NOTE: The windows binary may not work on older machines, as it was built for my Windows 10 machine. In that case please consult the next section.
- Clone the repository.
- Use the package manager pip to install the requirements:
pip install -r requirements.txt
- Run the application with:
python BalvanChat.py
- Install PyInstaller:
pip install pyinstaller
- Inside the directory where the repository is, run:
pyinstaller --windowed -i"Bear.ico" --add-data "UserInterface/Assets/*:UserInterface/Assets" --add-data "UserInterface/Templates/*:UserInterface/Templates" BalvanChat.py
- Your exe will get packaged inside the "dist/main" folder. Now we only have to place the html templates/images in the appropriate place:
-Navigate to dist/_internal.
-Place the 'UserInterface' folder inside the folder where the .exe is
Now you can run the app as a standalone app.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.