# Meet Client (Electron) The desktop client for the Meet application. Built with **Electron**, **React**, **TypeScript**, and **Vite**. ## Features - **High Quality Video**: 1080p @ 30 FPS video calling. - **Screen Sharing**: Low-latency 1080p screen sharing. - **Chat**: Real-time text chat. - **Protocol**: Custom UDP-based media transport for minimal latency. ## Prerequisites - **Node.js**: v18.0.0 or higher. - **NPM**: v9.0.0 or higher. ## Installation 1. **Clone the Repository**: ```bash git clone cd client-electron ``` 2. **Install Dependencies**: ```bash npm install ``` ## Development Start the app in development mode with Hot Module Replacement (HMR): ```bash npm run dev ``` ## Building for Production To create a distributable installer/executable for your OS: ### Linux ```bash npm run build:linux ``` Output: `dist/*.AppImage` (or configured target) ### Windows ```bash npm run build:win ``` Output: `dist/*.exe` ### macOS ```bash npm run build:mac ``` Output: `dist/*.dmg` ## Configuration ### Connection Settings - **Server URL**: When launching the app, enter your server's domain or IP (e.g., `meet.srtk.in` or `192.168.1.8`). - **UDP Port**: The client hardcodes the target UDP port to **4000**. Ensure your server's firewall allows inbound UDP on port 4000. ### Troubleshooting - **Black Video**: Ensure "NAT Loopback" is enabled if testing locally with a public domain, or use the local IP. - **Connection Drops**: Check your router's UDP flood protection / firewall settings if video freezes after a few seconds. ## Project Structure - `src/main/`: Electron Main process (Window creation, UDP socket handling). - `src/renderer/`: React frontend (UI, Video rendering). - `src/preload/`: IPC bridge between Main and Renderer.