A transparent, end-to-end encrypted web-based messaging application with a decentralized backend that prioritizes user privacy and security.
Liberdus is a secure texting web application that implements end-to-end encryption to ensure your conversations remain private. Unlike many messaging platforms, Liberdus is fully transparent - users can inspect the actual code running on their device through the About page in the app. Also each message is encrypted independently using both classical encryption (ECDH) and post quantum encryption (ML-KEM-1024). Insted of a centralized backend run by a company, Liberdus uses a blockchain operated by a network of decentrazied nodes which anyone can join using a standard computer.
- Independent end-to-end double encryption for all messages with both classical and post quantum cryptography
- Web-based interface accessible from any modern browser
- No download or installation required
- No frameworks - pure HTML, JavaScript, and CSS for complete transparency
- Self-contained application with viewable source code on device
- Decentralized backend of community operated nodes
- Open-source and community-driven development
Try out the application at liberdus.com/test
- Git
- Node.js and npm (for development tools)
- A local HTTP server (such as Python's
http.server, Node.jshttp-server, or any other of your choice)
-
Clone this repository:
git clone https://github.com/Liberdus/liberdus cd liberdus -
Install development dependencies (for linting and formatting):
npm install -
Start a local HTTP server in the cloned repository folder:
Using Python:
python -m http.serverOr using Node.js http-server:
npx http-server -
Optionally you can also run a local proxy server (like RPC server in Ethereum). This is not required since you can configure to use an existing remote proxy server.
If you want to setup your own proxy server see https://github.com/Liberdus/liberdus-proxy
- Optionally you can also run a local network of validator and archive nodes. This is not required if you configure your web client to use a remote proxy server.
If you want to setup your own local network of validators and archivers see https://github.com/liberdus/server
-
Configure the network.js file. If you are running your own proxy server see the network.js_loc file to see how the
gatewaysfield should be set. If you are using the default proxy server then no changes have to be made to this file. -
Access the application in your browser at
http://localhost:8000(or whichever port your HTTP server is using)
The application consists of four main components:
- Web Client: Pure HTML, JS, and CSS files that run in the browser and handle the encryption/decryption of messages
- Proxy Server: Manages message routing and delivery without ever having access to the unencrypted content; like RPC servers in Ethereum
- Validator Nodes: Provide redundant and sharded storage of the application state as well as consensus on new transactions that change the state
- Archive Servers: Provide long term storage of transaction history
We welcome contributions from the community! To contribute:
- Fork the repository: click the
Forkbutton at the top right of this page - Clone your forked repo:
git clone https://github.com/your-username/repo-name.git - Create a new branch:
git checkout -b my-new-branch - Make your changes
- Test thoroughly
- Commit your changes:
git add .thengit commit -am 'Add some feature' - Push to the branch:
git push origin my-new-branch - Submit a pull request: from your forked github repo click
Compare & pull request
Although the project has ESLint and Prettier to maintain consistent code formatting, they are currently not used. Try to keep your code style consistent with the existing code. In the future linting and formatting rules will automatically be applied when you save files in VS Code.
VS Code Setup:
- You can skip this for now
- Install the ESLint and Prettier extensions
- The project includes VS Code settings that will automatically format your code on save
Manual Commands:
You can skip this for now
# Check for linting errors
npm run lint
# Auto-fix linting errors
npm run lint:fix
# Format code with Prettier
npm run format
# Check if code is properly formatted
npm run format:checkGit Blame and Linting:
To preserve meaningful git blame history, this project uses .git-blame-ignore-revs to ignore linting/formatting setup commits. Git is configured to automatically ignore these commits:
# View blame ignoring linting setup commits (automatic)
git blame <filename>
# Manual usage if needed
git blame --ignore-revs-file .git-blame-ignore-revs <filename>Security is our top priority. If you discover any security vulnerabilities, please report them responsibly by emailing [email protected] instead of creating a public issue.
Join our Discord server