I started building my own remote desktop application about a week ago, mainly as a way to explore real-time communication, WebRTC, and cross-platform desktop development.
The frontend/client is built with C#/.NET and Avalonia, while the backend is built with Python, FastAPI, PostgreSQL, and WebSockets.
For the actual remote connection, I'm using WebRTC for peer-to-peer communication, with STUN/TURN for establishing connections across different networks.
So far, the project includes:
- Real-time screen sharing
- Remote mouse and keyboard control
- WebRTC data channels for control messages
- STUN/TURN connectivity
- Device identity and connection requests
- Session lifecycle management
- Dynamic screen-sharing bitrate and FPS
I'm currently working on system audio and microphone streaming, followed by clipboard synchronization.
It's still an early prototype.
