https://github.com/rokoss21/enigmo
π Privacy-first messaging platform with end-to-end encryption. Flutter client + Dart server. Ed25519/X25519 cryptography, WebSocket real-time communication, zero-knowledge architecture.
https://github.com/rokoss21/enigmo
cross-platform cryptography dart e2ee encryption flutter messaging mobile-app monorepo privacy real-time security websocket zero-knowledge
Last synced: 5 months ago
JSON representation
π Privacy-first messaging platform with end-to-end encryption. Flutter client + Dart server. Ed25519/X25519 cryptography, WebSocket real-time communication, zero-knowledge architecture.
- Host: GitHub
- URL: https://github.com/rokoss21/enigmo
- Owner: rokoss21
- License: other
- Created: 2025-08-19T13:40:09.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-05T16:41:55.000Z (10 months ago)
- Last Synced: 2025-09-05T18:40:31.018Z (10 months ago)
- Topics: cross-platform, cryptography, dart, e2ee, encryption, flutter, messaging, mobile-app, monorepo, privacy, real-time, security, websocket, zero-knowledge
- Language: Dart
- Homepage:
- Size: 649 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π Enigmo
**Enterprise-Grade Secure Messaging Platform**
*Privacy-first, end-to-end encrypted messaging designed for the modern world*
[](https://flutter.dev)
[](https://dart.dev)
[](LICENSE)
[](https://github.com/rokoss21/enigmo/actions)
[]()
[]()
[π Quick Start](#quick-start) β’ [π Documentation](#architecture-overview) β’ [π§ Development](#local-development) β’ [π£οΈ Roadmap](#roadmap) β’ [π€ Contributing](#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.
```mermaid
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
```
---
## π‘οΈ 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`):
```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.
```mermaid
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)
```
### 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.
```rust
// 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.
```javascript
// 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.
```javascript
// 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.
```go
// 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](https://flutter.dev/docs/get-started/install)
- **Dart SDK** (included with Flutter)
- **Development Environment**: VS Code, Android Studio, or Xcode
- **Platform Tools**: iOS/Android toolchains per [Flutter docs](https://flutter.dev/docs/get-started/install)
### β‘ **One-Command Setup**
```bash
# 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)
```bash
# 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**
```bash
cd enigmo_server
# Development mode with hot reload
dart run bin/anongram_server.dart \
--host localhost \
--port 8080 \
--debug
```
#### π **Monitor Server**
- Health: http://localhost:8080/api/health
- Stats: http://localhost:8080/api/stats
- WebSocket: ws://localhost:8080/ws
#### π± **Start Mobile App**
```bash
cd enigmo_app
# iOS Simulator
flutter run -d ios
# Android Emulator
flutter run -d android
# Web Browser
flutter run -d web
```
#### π§ **Development Tools**
```bash
# Hot reload code
r
# Hot restart app
R
# Open DevTools
flutter pub global run devtools
```
### π§ͺ **Testing & Quality**
```bash
# 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)
- [x] **Core E2EE Implementation** - Ed25519/X25519 cryptography
- [x] **Flutter Mobile Apps** - iOS and Android clients
- [x] **WebSocket Server** - Real-time message routing
- [x] **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](https://github.com/rokoss21/enigmo/issues/new?template=feature_request.md) β’ [π Report Bug](https://github.com/rokoss21/enigmo/issues/new?template=bug_report.md) β’ [π¬ Join Discussion](https://github.com/rokoss21/enigmo/discussions)
---
## π§ͺ 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*
[](https://opensource.org/licenses/Apache-2.0)
[π View Full License](LICENSE) β’ [β License FAQ](https://www.apache.org/foundation/license-faq.html)
---
## π 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](mailto:rokoss21@yandex.com) β’ [π¬ Telegram](https://t.me/rokoss21)
---
**Built with β€οΈ by [Emil Rokossovskiy](https://github.com/rokoss21)**
*"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** β