Skip to content

rokoss21/enigmo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ” Enigmo

Enterprise-Grade Secure Messaging Platform

Privacy-first, end-to-end encrypted messaging designed for the modern world

Flutter Dart License Build Status Security Platform

πŸš€ Quick Start β€’ πŸ“– Documentation β€’ πŸ”§ Development β€’ πŸ›£οΈ Roadmap β€’ 🀝 Contributing


🌟 Key Features

πŸ”’ Zero-Knowledge Security

  • Ed25519 digital signatures for identity
  • X25519 ECDH for perfect forward secrecy
  • AEAD encryption with authenticated data
  • Client-side key generation and storage
  • Zero-trust server architecture

⚑ Real-Time Performance

  • WebSocket for instant messaging
  • Low-latency message routing
  • Minimal server footprint
  • Mobile-optimized architecture
  • Battery-efficient design

πŸ“± Cross-Platform Native

  • Flutter for iOS, Android, Web
  • Native performance on all platforms
  • Consistent UI/UX across devices
  • Offline-first capabilities
  • Progressive Web App support

πŸ—οΈ Production-Ready

  • Monorepo structure for easy maintenance
  • Comprehensive test coverage
  • Docker containerization
  • Scalable server architecture
  • Enterprise deployment ready

πŸ—οΈ Architecture Overview

Enigmo follows a zero-trust architecture where the server never has access to plaintext messages

πŸ“¦ Monorepo Structure

πŸ“ enigmo/
β”œβ”€β”€ πŸ“± enigmo_app/          # Flutter Mobile & Web Client
β”‚   β”œβ”€β”€ lib/models/         # Data models and entities
β”‚   β”œβ”€β”€ lib/services/       # Business logic & crypto engine
β”‚   β”œβ”€β”€ lib/screens/        # UI screens and widgets
β”‚   └── test/              # Comprehensive test suite
└── πŸ–₯️ enigmo_server/       # Lightweight Dart Server
    β”œβ”€β”€ bin/               # Server entrypoint
    β”œβ”€β”€ lib/services/      # User management & routing
    └── test/             # Server-side tests

πŸ”„ Component Responsibilities

πŸ“± Client (Flutter App) πŸ–₯️ Server (Dart Backend)
  • πŸ”‘ Key Management: Ed25519 identity generation
  • πŸ” Encryption: X25519 ECDH + AEAD encryption
  • ✍️ Signing: Message authenticity with Ed25519
  • πŸ’Ύ Storage: Secure local key storage
  • 🌐 Communication: WebSocket + REST API
  • πŸ”„ State Management: Real-time UI updates
  • πŸ‘₯ User Directory: Public key management
  • πŸ“¨ Message Routing: Zero-knowledge forwarding
  • πŸ”Œ WebSocket Handling: Real-time connections
  • πŸ“Š Health Monitoring: /api/health, /api/stats
  • πŸ”’ Session Management: Connection state tracking
  • βš–οΈ Load Balancing: Stateless horizontal scaling

πŸ” Security Protocol Flow

  1. 🎯 Bootstrap: Clients publish Ed25519/X25519 public keys
  2. 🀝 Key Exchange: X25519 ECDH derives shared session secrets
  3. πŸ“ Message Encryption: AEAD with nonce + MAC authentication
  4. βœ… Digital Signing: Ed25519 signature for message integrity
  5. πŸ“‘ Zero-Knowledge Routing: Server forwards without decryption

πŸ—οΈ System Architecture Diagram

πŸ“± ENIGMO FLUTTER APP

πŸ”„ COMMUNICATION

πŸ–₯️ ENIGMO DART SERVER

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    🎨 UI/UX Layer       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   βš™οΈ Services Layer     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   πŸ” Crypto Engine      β”‚ ← Core
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   πŸ’Ύ Secure Storage     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Responsibilities:

  • πŸ”‘ Key generation & management
  • πŸ” Message encryption/decryption
  • ✍️ Digital signature creation
  • πŸ’Ύ Secure local storage
  • 🎨 Real-time UI updates

πŸ”Œ WebSocket
(E2EE Messages)

⬇️

🌐 REST API
(HTTPS)

⬇️

πŸ”’ Zero-Knowledge
Server never sees plaintext

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  πŸ”Œ WebSocket Handler   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚       β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
β”‚   πŸ‘₯ User Manager       β”‚
β”‚   πŸ“¨ Message Router     β”‚ ← Core
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    🌐 REST API          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Responsibilities:

  • πŸ‘₯ Public key directory
  • πŸ“¨ Zero-knowledge forwarding
  • πŸ”Œ Real-time connections
  • πŸ“Š Health monitoring
  • βš–οΈ Horizontal scaling

Client State Lifecycle

The client application manages its connection to the WebSocket server through a simple state machine to ensure robust real-time communication.

stateDiagram-v2
    [*] --> Disconnected
    Disconnected --> Connecting: user.login()
    Connecting --> Connected: WebSocket.onOpen
    Connecting --> Disconnected: WebSocket.onError
    Connected --> Authenticating: sendAuth(credentials)
    Authenticating --> Online: server.authSuccess
    Authenticating --> Connected: server.authFailure
    Online --> Disconnected: user.logout() / connectionLost
    Connected --> Disconnected: connectionLost
Loading

πŸ›‘οΈ Security Model

Built with defense-in-depth principles and modern cryptographic standards

Security Layer Implementation Status
πŸ”‘ Identity Ed25519 keypairs with optional key pinning βœ… Implemented
🀝 Key Agreement X25519 ECDH for perfect forward secrecy βœ… Implemented
πŸ”’ Encryption ChaCha20-Poly1305 AEAD (nonce + MAC) βœ… Implemented
✍️ Authentication Ed25519 digital signatures βœ… Implemented
πŸ”„ Replay Protection Cryptographic nonces + monotonic counters βœ… Implemented
πŸƒβ€β™‚οΈ Forward Secrecy Double-ratchet key rotation 🚧 Roadmap
πŸ” Post-Quantum Kyber/Dilithium hybrid 🚧 Research

🎯 Security Guarantees

  • End-to-End Encryption: Only sender and recipient can read messages
  • Perfect Forward Secrecy: Past messages remain secure if keys are compromised
  • Message Authenticity: Cryptographic proof of sender identity
  • Replay Protection: Each message can only be delivered once
  • Zero-Knowledge Server: Server cannot decrypt or read message content
  • Deniable Authentication: Recipients can verify, but can't prove to third parties

Data Model (simplified)

Client model EncryptedMessage (see enigmo_app/lib/services/crypto_engine.dart):

class EncryptedMessage {
  final String encryptedData; // base64(cipherText)
  final String nonce;         // base64(nonce)
  final String mac;           // base64(auth tag)
  final String signature;     // base64(Ed25519 over cipherText)
}

Server routes (see enigmo_server/bin/anongram_server.dart):

  • GET /api/health β€” server status
  • GET /api/stats β€” server, user, message counters
  • GET /ws β€” WebSocket for real‑time messaging

Cryptographic Flow

This diagram illustrates the end-to-end encrypted message exchange between two clients, Alice and Bob, mediated by the Enigmo server.

sequenceDiagram
    participant Alice as Alice's Client
    participant Server as Enigmo Server
    participant Bob as Bob's Client

    Alice->>+Server: Publish Public Keys (Ed25519, X25519)
    Server-->>-Alice: OK

    Bob->>+Server: Publish Public Keys (Ed25519, X25519)
    Server-->>-Bob: OK

    Alice->>Server: Fetch Bob's Public Keys
    Server->>Alice: Bob's Keys

    Note over Alice, Bob: Alice now has Bob's keys and can derive a shared secret.

    Alice->>Alice: Derive Shared Secret (X25519)
    Alice->>Alice: Encrypt & Sign Message

    Alice->>+Server: Send E2EE Message for Bob
    Server->>+Bob: Forward E2EE Message
    Server-->>-Alice: Delivered (Ack)

    Bob->>Bob: Verify Signature (Ed25519)
    Bob->>Bob: Derive Shared Secret (X25519)
    Bob->>Bob: Decrypt Message
    Bob-->>-Server: OK (Ack)
Loading

Detailed Pseudocode

Here is a more granular breakdown of the cryptographic operations.

1. Key Agreement (ECDH)

Executed once per peer session to establish a symmetric encryption key.

// Alice wants to talk to Bob
// 1. Alice fetches Bob's public X25519 key from the server.
// 2. Alice uses her private X25519 key and Bob's public key.

function derive_shared_key(my_private_key: X25519_Priv, their_public_key: X25519_Pub) -> [u8; 32] {
    // Perform Elliptic Curve Diffie-Hellman
    let shared_secret = X25519(my_private_key, their_public_key);

    // Use a Key Derivation Function (e.g., HKDF-SHA256) for cryptographic hygiene
    // The context string prevents key reuse across different domains (e.g., attachments vs. messages).
    let context = "enigmo-e2ee-message-v1";
    let session_key = HKDF_SHA256(shared_secret, salt=null, info=context);
    return session_key;
}

2. Sending a Message

Alice encrypts and signs a message for Bob.

// 1. Derive the key for this session
const sessionKey = derive_shared_key(alice.x25519_priv, bob.x25519_pub);

// 2. Prepare the message and associated data
const plaintext = "Hello, Bob!";
const associated_data = JSON.stringify({ sender: alice.id, timestamp: Date.now() });

// 3. Encrypt using an Authenticated Encryption with Associated Data (AEAD) cipher
const nonce = crypto.randomBytes(24); // Must be unique for each message with the same key
const { ciphertext, mac } = AEAD_Encrypt(sessionKey, nonce, plaintext, associated_data);

// 4. Sign the *ciphertext* with long-term identity key to prevent tampering
const signature = Ed25519_Sign(alice.ed25519_priv, ciphertext);

// 5. Construct the final payload for the server
const payload = {
  recipient: bob.id,
  message: {
    encryptedData: Base64.encode(ciphertext),
    nonce: Base64.encode(nonce),
    mac: Base64.encode(mac),
    signature: Base64.encode(signature)
  }
};

// 6. Send to server, which routes based on 'recipient'
websocket.send(JSON.stringify(payload));

3. Receiving a Message

Bob receives the payload from the server and decrypts it.

// 1. Parse the incoming payload
const payload = JSON.parse(event.data);
const message = payload.message;
const senderId = payload.sender; // Server injects this

// 2. Fetch sender's public keys from local cache or server
const alice = get_user_keys(senderId);

// 3. Verify the signature on the ciphertext first
const is_valid_signature = Ed25519_Verify(
    alice.ed25519_pub,
    Base64.decode(message.encryptedData),
    Base64.decode(message.signature)
);
if (!is_valid_signature) { throw new Error("Invalid signature! Message tampered."); }

// 4. If signature is valid, derive the same session key
const sessionKey = derive_shared_key(bob.x25519_priv, alice.x25519_pub);

// 5. Decrypt the message
const associated_data = JSON.stringify({ sender: senderId, timestamp: payload.timestamp });
const plaintext = AEAD_Decrypt(
    sessionKey,
    Base64.decode(message.nonce),
    Base64.decode(message.encryptedData),
    Base64.decode(message.mac),
    associated_data
);

if (plaintext === null) { throw new Error("Decryption failed! MAC mismatch."); }

// 6. Render the plaintext message
console.log("New message:", plaintext);

4. Server-Side Routing (Simplified)

The server's role is to act as a secure routing fabric. It never decrypts message content.

// High-level server logic for the WebSocket handler

// In-memory map to track active user connections
// In a production system, this would be backed by Redis or a similar store.
var active_connections = make(map[UserID]WebSocketConnection)

func WebSocketHandler(ws: WebSocketConnection) {
    // 1. Authenticate the connection
    // The client sends a token or public key to identify itself.
    user_id, err := Authenticate(ws)
    if err != nil {
        ws.Close("Authentication failed")
        return
    }

    // 2. Register the user's connection
    active_connections[user_id] = ws
    log.Printf("User %s connected", user_id)

    // 3. Enter the message routing loop
    for {
        message, err := ws.ReadMessage()
        if err != nil {
            // Connection closed or error
            delete(active_connections, user_id)
            log.Printf("User %s disconnected", user_id)
            break
        }

        // 4. Parse the outer envelope to find the recipient
        // The server only reads metadata, not the encrypted 'message' object.
        envelope, err := ParseEnvelope(message)
        if err != nil {
            ws.SendMessage("{"error": "Invalid envelope"}")
            continue
        }

        // 5. Look up the recipient's connection
        recipient_ws, found := active_connections[envelope.RecipientID]
        if !found {
            // Handle offline recipient (e.g., store for later delivery - see roadmap)
            ws.SendMessage("{"error": "Recipient offline"}")
            continue
        }

        // 6. Forward the *original, encrypted* message payload
        // The server injects the sender's ID for the recipient's convenience.
        forward_payload = AddSenderID(message, user_id)
        err = recipient_ws.SendMessage(forward_payload)
        if err != nil {
            log.Printf("Failed to forward message to %s", envelope.RecipientID)
        }
    }
}

πŸš€ Quick Start

Get Enigmo running in under 5 minutes

πŸ“‹ Prerequisites

  • Flutter SDK (stable channel) - Install Guide
  • Dart SDK (included with Flutter)
  • Development Environment: VS Code, Android Studio, or Xcode
  • Platform Tools: iOS/Android toolchains per Flutter docs

⚑ One-Command Setup

# Clone and setup everything
git clone https://github.com/rokoss21/enigmo.git
cd enigmo

# Install all dependencies
make setup  # or run the commands below manually
πŸ“– Manual Setup (click to expand)
# Server dependencies
cd enigmo_server
dart pub get

# App dependencies  
cd ../enigmo_app
flutter pub get
flutter pub run build_runner build  # Generate code if needed

🎯 Development Workflow

πŸ–₯️ Start Server

cd enigmo_server

# Development mode with hot reload
dart run bin/anongram_server.dart \
  --host localhost \
  --port 8080 \
  --debug

πŸ“Š Monitor Server

πŸ“± Start Mobile App

cd enigmo_app

# iOS Simulator
flutter run -d ios

# Android Emulator
flutter run -d android

# Web Browser
flutter run -d web

πŸ”§ Development Tools

# Hot reload code
r

# Hot restart app
R

# Open DevTools
flutter pub global run devtools

πŸ§ͺ Testing & Quality

# Run all tests
make test

# Or manually:
cd enigmo_server && dart test --coverage
cd ../enigmo_app && flutter test --coverage

# Code formatting
dart format .
flutter format .

# Static analysis
dart analyze
flutter analyze

πŸ“¦ Production Builds

Platform Command Output
πŸ€– **Android** flutter build appbundle --release build/app/outputs/bundle/release/
🍎 **iOS** flutter build ios --release build/ios/iphoneos/
🌐 **Web** flutter build web --release build/web/
πŸ–₯️ **Server** dart compile exe bin/anongram_server.dart bin/anongram_server.exe

πŸ“ Project Structure

πŸ—‚οΈ Detailed File Structure (click to expand)
πŸ“ enigmo/                          # Root monorepo
β”œβ”€β”€ πŸ“„ README.md                    # This file
β”œβ”€β”€ πŸ“„ Makefile                     # Build automation
β”œβ”€β”€ πŸ“„ docker-compose.yml           # Development environment
β”œβ”€β”€ πŸ“„ .github/                     # CI/CD workflows
β”‚   └── workflows/
β”‚       β”œβ”€β”€ ci.yml                  # Continuous Integration
β”‚       └── security.yml            # Security scanning
β”‚
β”œβ”€β”€ πŸ“± enigmo_app/                  # Flutter Mobile & Web Client
β”‚   β”œβ”€β”€ πŸ“„ pubspec.yaml            # Dependencies and metadata
β”‚   β”œβ”€β”€ πŸ“ lib/
β”‚   β”‚   β”œβ”€β”€ πŸ“„ main.dart           # Application entry point
β”‚   β”‚   β”œβ”€β”€ πŸ“ models/             # Data models
β”‚   β”‚   β”‚   β”œβ”€β”€ message.dart       # Message data structure
β”‚   β”‚   β”‚   β”œβ”€β”€ user.dart          # User identity model
β”‚   β”‚   β”‚   └── chat.dart          # Chat conversation model
β”‚   β”‚   β”œβ”€β”€ πŸ“ services/           # Business logic layer
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ” crypto_engine.dart    # E2EE cryptographic operations
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ”‘ key_manager.dart      # Key storage and management
β”‚   β”‚   β”‚   β”œβ”€β”€ 🌐 network_service.dart  # WebSocket & REST client
β”‚   β”‚   β”‚   └── πŸ’Ύ storage_service.dart  # Local data persistence
β”‚   β”‚   β”œβ”€β”€ πŸ“ screens/            # User interface screens
β”‚   β”‚   β”‚   β”œβ”€β”€ chat_screen.dart   # Individual chat interface
β”‚   β”‚   β”‚   β”œβ”€β”€ chat_list_screen.dart # Chat list overview
β”‚   β”‚   β”‚   └── settings_screen.dart # App configuration
β”‚   β”‚   └── πŸ“ widgets/            # Reusable UI components
β”‚   β”œβ”€β”€ πŸ“ test/                   # Test suites
β”‚   β”‚   β”œβ”€β”€ unit/                  # Unit tests
β”‚   β”‚   β”œβ”€β”€ widget/                # Widget tests  
β”‚   β”‚   └── integration/           # E2E integration tests
β”‚   β”œβ”€β”€ πŸ“ android/                # Android platform code
β”‚   β”œβ”€β”€ πŸ“ ios/                    # iOS platform code
β”‚   └── πŸ“ web/                    # Web platform code
β”‚
└── πŸ–₯️ enigmo_server/              # Lightweight Dart Server
    β”œβ”€β”€ πŸ“„ pubspec.yaml           # Server dependencies
    β”œβ”€β”€ πŸ“ bin/
    β”‚   └── πŸ“„ anongram_server.dart # Server entry point
    β”œβ”€β”€ πŸ“ lib/
    β”‚   β”œβ”€β”€ πŸ“ models/             # Server data models
    β”‚   β”‚   β”œβ”€β”€ user.dart          # Server-side user model
    β”‚   β”‚   └── message.dart       # Message routing model
    β”‚   β”œβ”€β”€ πŸ“ services/           # Server business logic
    β”‚   β”‚   β”œβ”€β”€ πŸ‘₯ user_manager.dart     # User directory management
    β”‚   β”‚   β”œβ”€β”€ πŸ“¨ message_manager.dart  # Message routing logic
    β”‚   β”‚   β”œβ”€β”€ πŸ”Œ websocket_handler.dart # Real-time communication
    β”‚   β”‚   └── πŸ” auth_service.dart     # Authentication handling
    β”‚   └── πŸ“ utils/              # Utility functions
    β”‚       └── πŸ“ logger.dart           # Structured logging
    β”œβ”€β”€ πŸ“ test/                   # Server test suites
    β”‚   β”œβ”€β”€ unit/                  # Server unit tests
    β”‚   └── integration/           # Server integration tests
    └── πŸ“„ Dockerfile             # Container deployment

🎯 Key Components

Component File Purpose
πŸ” Crypto Engine enigmo_app/lib/services/crypto_engine.dart Ed25519/X25519 operations, AEAD encryption
🌐 Network Service enigmo_app/lib/services/network_service.dart WebSocket client, REST API calls
πŸ”‘ Key Manager enigmo_app/lib/services/key_manager.dart Secure key storage and retrieval
πŸ–₯️ Server Main enigmo_server/bin/anongram_server.dart HTTP server and WebSocket handler
πŸ‘₯ User Manager enigmo_server/lib/services/user_manager.dart Public key directory and user sessions
πŸ“¨ Message Router enigmo_server/lib/services/message_manager.dart Zero-knowledge message forwarding

πŸ›£οΈ Roadmap

Building the future of secure communication

🎯 Phase 1: Foundation (Q3-Q4 2025)

  • Core E2EE Implementation - Ed25519/X25519 cryptography
  • Flutter Mobile Apps - iOS and Android clients
  • WebSocket Server - Real-time message routing
  • Comprehensive Testing - Unit, widget, and integration tests
  • πŸ” Key Pinning & TOFU - Trust-on-first-use security model
  • πŸ“± UI/UX Polish - Accessibility and user experience improvements
  • πŸ“Š Telemetry Framework - Opt-in analytics and crash reporting

πŸš€ Phase 2: Resilience (Q1 2026)

  • πŸ“€ Offline Message Queue - Store and forward when disconnected
  • πŸ”„ Smart Retry Logic - Exponential backoff with jitter
  • πŸ“Ž Encrypted Attachments - Files, images, and media sharing
  • 🌐 Progressive Web App - Full-featured web client
  • πŸ₯ Health Monitoring - Advanced server observability
  • πŸ”’ Message Deletion - Secure message expiration

🏒 Phase 3: Enterprise (Q2 2026)

  • πŸƒβ€β™‚οΈ Perfect Forward Secrecy - Double-ratchet key rotation
  • πŸ“± Multi-Device Sync - Per-device key management
  • πŸ‘₯ Group Messaging - Encrypted group conversations
  • ☁️ Encrypted Backups - Secure key recovery system
  • πŸ“ˆ OpenTelemetry - Enterprise observability stack
  • πŸ—„οΈ Database Integration - PostgreSQL, Redis support

🎬 Phase 4: Rich Media (Q3 2026)

  • πŸŽ₯ Voice & Video Calls - WebRTC P2P communication
  • πŸ“ž Call Signaling - Secure call setup over WebSocket
  • 🎬 Screen Sharing - Encrypted screen collaboration
  • πŸŽ™οΈ Voice Messages - Encrypted audio messaging
  • πŸ“Ή Video Messages - Short-form video sharing
  • πŸ” Media Encryption - E2EE for all multimedia content

πŸ”¬ Phase 5: Advanced Security (Q4 2026)

  • πŸ›‘οΈ Post-Quantum Crypto - Kyber/Dilithium hybrid schemes
  • πŸ•΅οΈ Metadata Protection - Traffic analysis resistance
  • πŸ” Zero-Knowledge Proofs - Advanced privacy primitives
  • 🌍 Decentralized Architecture - P2P mesh networking
  • πŸ” Hardware Security - HSM and secure enclave integration
  • πŸ€– AI Safety Tools - Content moderation without plaintext access

🎯 Want to contribute to the roadmap?

πŸ“ Suggest Feature β€’ πŸ› Report Bug β€’ πŸ’¬ Join Discussion


πŸ§ͺ Quality & Security Assurance

Security and code quality are not afterthoughtsβ€”they're built into every line of code

πŸ” Code Quality Standards

  • πŸ“Š Test Coverage: >90% code coverage across all modules
  • πŸ”§ Static Analysis: Dart analyzer with strict lint rules
  • πŸ“ Code Formatting: Automated formatting with dart format
  • πŸ“š Documentation: Comprehensive inline code documentation
  • πŸ”’ Security Scanning: Automated vulnerability scanning
  • ⚑ Performance: Regular benchmarking and profiling

πŸ›‘οΈ Security Practices

  • 🎯 Threat Modeling: Documented attack vectors and mitigations
  • πŸ” Security Reviews: Peer review for all cryptographic code
  • πŸ§ͺ Penetration Testing: Regular security audits
  • πŸ“‹ Security Checklist: OWASP Mobile Security Guidelines
  • πŸ”„ Dependency Scanning: Automated vulnerability detection
  • πŸ“Š Security Metrics: Tracked security KPIs and incidents

🀝 Contributing

We welcome contributions from developers, security researchers, and privacy advocates

πŸš€ Quick Contribution Guide

  1. 🍴 Fork the repository
  2. 🌟 Create a feature branch (git checkout -b feature/amazing-feature)
  3. βœ… Test your changes thoroughly
  4. πŸ“ Commit with conventional commits (git commit -m 'feat: add amazing feature')
  5. πŸš€ Push to your branch (git push origin feature/amazing-feature)
  6. πŸ“¬ Open a Pull Request

πŸ“‹ Contribution Guidelines

  • πŸ§ͺ Include Tests: All new features must include comprehensive tests
  • πŸ“š Update Documentation: Keep README and code comments current
  • πŸ”’ Security First: Follow secure coding practices
  • πŸ“ Conventional Commits: Use semantic commit messages
  • 🎨 Code Style: Follow project formatting and lint rules
  • πŸ’¬ Be Respectful: Follow our Code of Conduct

🎯 Areas We Need Help With

  • πŸ” Cryptography Review: Security audit and implementation review
  • 🌐 Internationalization: Multi-language support
  • β™Ώ Accessibility: Making the app usable for everyone
  • πŸ“± Platform Features: Platform-specific optimizations
  • πŸ“š Documentation: Technical writing and tutorials
  • 🎨 UI/UX Design: User interface improvements

πŸ“„ License

Apache License 2.0

Open source software that respects your freedom and privacy

License

πŸ“ View Full License β€’ ❓ License FAQ


πŸ™ Acknowledgments

  • Signal Protocol: Inspiration for our cryptographic design
  • Flutter Team: Amazing cross-platform framework
  • Dart Team: Excellent server-side language and tooling
  • Open Source Community: For making secure communication accessible

πŸ“ž Support & Contact

Need help? Have questions? Found a security issue?

πŸ“§ Email β€’ πŸ’¬ Telegram


Built with ❀️ by Emil Rokossovskiy

"Privacy is not about having something to hide. Privacy is about having something to protect."

⭐ Star this project if you believe in secure, private communication ⭐

About

πŸ” Privacy-first messaging platform with end-to-end encryption. Flutter client + Dart server. Ed25519/X25519 cryptography, WebSocket real-time communication, zero-knowledge architecture.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors