Skip to content

chizy7/QuietDrop

QuietDrop Logo

QuietDrop: End-to-End Encrypted Messaging in Rust

Build Status License GitHub Forks GitHub Stars Contributor Covenant Tauri Yew Rust

QuietDrop mascot QuietDrop is a secure messaging application built in Rust, focusing on privacy and security. It provides end-to-end encryption using modern cryptographic libraries to ensure your messages remain confidential. Available as both a command-line tool and a cross-platform application for desktop and mobile devices.

Getting Started  •   Security Architecture  •   API Reference  •   Tauri Architecture  •   Wiki

Features

  • End-to-End Encryption: Messages are encrypted on the sender's device and can only be decrypted by the intended recipient
  • Cross-Platform Application: Modern GUI application built with Tauri 2.0 for desktop and mobile
  • Command-Line Interface: Traditional CLI for server and client operations
  • Strong Authentication: Secure user authentication with Argon2id password hashing
  • Forward Secrecy: Protection of past communications even if keys are compromised
  • Group Chats: Secure communication with multiple participants (in development)
  • File Transfer: Encrypted file sharing between users (in development)

Quick Start

Desktop/Mobile Application

# Clone the repository
git clone https://github.com/chizy7/QuietDrop.git
cd QuietDrop

# Build the Tauri desktop application
cd quietdrop-tauri
trunk build
cd src-tauri
cargo tauri build

# Run the application
cargo tauri dev

Command Line Interface

# Clone the repository
git clone https://github.com/chizy7/QuietDrop.git
cd QuietDrop

# Build the CLI
cargo build -p quietdrop-cli --release

# Run the server
./target/release/quietdrop-cli server

# In another terminal, run the client
./target/release/quietdrop-cli client

Repository Structure

Directory Description
quietdrop-core/ Core library with shared encryption and messaging functionality
quietdrop-cli/ Command-line interface for server and client operations
quietdrop-tauri/ Cross-platform application built with Tauri 2.0 and Yew
quietdrop-tauri/src/ Yew-based frontend (compiled to WebAssembly)
quietdrop-tauri/src-tauri/ Tauri backend bridge to core library
docs/ Project documentation
tests/ Integration tests for core components
.github/ GitHub configuration and CI/CD workflows

Usage

QuietDrop provides both a desktop/mobile interface and a command-line interface:

Desktop/Mobile Application

The application offers an intuitive GUI for sending and receiving encrypted messages:

  1. Launch the app: Run the QuietDrop application on your desktop or mobile device
  2. Create or load keypair: Generate a new keypair or load an existing one
  3. Connect to server: Enter the server address to connect
  4. Send messages: Type your message and select a recipient
  5. View conversations: See your message history in the conversation view

Command Line Interface

QuietDrop's CLI uses a client-server architecture with public key cryptography:

// Example: Encrypting a message
let message = "Hello, secure world!";
let encrypted = encrypt_message(&message, &recipient_public_key, &sender_secret_key);

// Example: Sending a message
let msg = Message {
    timestamp: chrono::Utc::now(),
    message_type: MessageType::Text,
    sender: "Alice".to_owned(),
    recipient: "Bob".to_owned(),
    content: vec![],
    public_key: sender_public_key,
};
msg.encrypt_content(&message, &recipient_public_key, &sender_secret_key);

Documentation

Testing

QuietDrop includes comprehensive test suites for all components:

# Run all tests
cargo test --workspace

# Run specific component tests
cargo test -p quietdrop-core

# Run tests with output
cargo test -- --nocapture

# Run ignored tests that require special setup
cargo test -- --ignored

Contributing

QuietDrop is an active open-source project that welcomes contributions:

Security

Security is our top priority. If you discover a vulnerability, please see our Security Policy for reporting guidelines.

License

QuietDrop is licensed under the MIT License.

Acknowledgements

  • Tauri for the cross-platform application framework
  • Yew for the frontend framework
  • sodiumoxide for cryptographic operations
  • rustls for TLS implementation
  • Tokio for asynchronous runtime
  • Serde for serialization
  • Argon2 for password hashing

Releases

No releases published

Contributors 3

  •  
  •  
  •