63 lines
4.7 KiB
Markdown
63 lines
4.7 KiB
Markdown
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
|
|
│ └── 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
|
|
│ ├── 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: eframe, cpal, audiopus, webrtc-dsp, extism
|
|
│ └── 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
|
|
│ │ ├── 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
|
|
│ │ ├── 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
|
|
│ │ ├── 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
|
|
│ ├── 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 |