5.0 KiB
voice_app/ ├── Cargo.toml # Workspace manifest; links all crates ├── README.md # Project entry point and documentation index ├── .gitignore # Exclude /target, .env, and binary/database files ├── LICENSE # Project licensing (e.g., AGPLv3 or MIT) ├── Documentation/ # Comprehensive technical specifications and plans │ ├── High_level_plan/ # Technical specs and architecture overview │ ├── Low_level_plan/ # Implementation details and data flow │ ├── Mile_Stones/ # Code-level step-by-step checklists │ ├── Standards/ # Strict rules for code quality and testing │ └── Concept/ # UI mockups and aesthetic references ├── core_protocol/ # Shared binary logic and network Enums │ ├── Cargo.toml # deps: serde, bincode, uuid, chrono, thiserror, secrecy │ └── src/ │ ├── lib.rs # Exports modules │ ├── tcp_events.rs # Enums for reliable Auth/Chat/Admin events │ ├── udp_packets.rs # Structs for VoiceFrame headers and payload │ └── constants.rs # Fixed specs: 48kHz, 20ms frame (960 samples) ├── server_node/ # Headless relay, DB host, and Web Admin dashboard │ ├── Cargo.toml # deps: tokio, sqlx, axum, rust-embed, argon2, jwt, dashmap, tracing, anyhow, tokio-util, tokio-serde │ ├── migrations/ # SQLx .sql scripts for SQLite schema persistence │ ├── web_dashboard/ # Admin UI source (HTML/CSS/JS) for embedding │ └── src/ │ ├── main.rs # Entry: Spawns TCP(8080), UDP(8080), HTTP(8081) tasks │ ├── state.rs # Live concurrent State: DashMap tracking │ ├── database.rs # SQLite logic: Auth and Persistent settings │ ├── tcp_router.rs # Logic for reliable control lanes │ ├── udp_relay.rs # High-speed voice packet forwarding │ ├── web_api.rs # Axum REST API and embedded file serving │ ├── telemetry.rs # Prometheus /metrics endpoint for server health │ └── auth_service.rs # Argon2 hashing and JWT token generation ├── client_node/ # Desktop application, audio engine, and plugin host │ ├── Cargo.toml # deps: tokio, eframe, cpal, audiopus, webrtc-dsp, extism, tracing, anyhow, tokio-util, tokio-serde │ └── src/ │ ├── main.rs # Entry: Initializes eframe and background Tokio runtime │ ├── app_state.rs # Actor Pattern bridge for non-blocking UI/Net │ ├── ui/ # egui Graphical Interface │ │ ├── mod.rs # Module exports │ │ ├── layout.rs # Main window shell │ │ ├── side_panel.rs # Channel tree and connection UI │ │ └── chat_area.rs # Text messages and system logs │ ├── network/ # Internet connectivity modules │ │ ├── mod.rs # Module exports │ │ ├── control.rs # TCP: TLS, Heartbeats, Auto-reconnect │ │ ├── voice.rs # UDP: Jitter buffer (40ms), Seq ordering, Decryption │ │ └── chaos.rs # UDP Middleware: Artificial packet loss/latency injection │ ├── audio/ # Real-time pipeline with 20ms frames │ │ ├── mod.rs # Module exports │ │ ├── capture.rs # Microphone -> Lock-free Ringbuffer │ │ ├── dsp.rs # Noise suppression & Echo cancellation (WebRTC) │ │ ├── codec.rs # Opus Encoding/Decoding (48kbps VBR) │ │ └── playback.rs # Ringbuffer -> Speaker output │ └── plugins/ # Wasm Extension Sandbox │ ├── mod.rs # Module exports │ ├── runtime.rs # Extism Wasm runtime initialization │ └── hooks.rs # Event triggers: OnVoice, OnMessage, OnJoin ├── tests/ # Integration and Load Testing │ └── load_tester.rs # Standalone binary simulating 100+ concurrent clients ├── deploy/ # Automation and containerization assets │ ├── Dockerfile # Multi-stage build for tiny server images │ ├── docker-compose.yml # One-click deployment for Docker/NAS users │ └── voice_app.service # Systemd unit file for Linux hosting ├── scripts/ # Zero-conf installation scripts │ ├── install.sh # Linux "One-liner" installer (curl | bash) │ └── update.sh # Automated binary fetcher from GitHub └── config/ └── default_config.toml # Default ports, SQLite paths, and network settings