View Project
A remote on the web to control your presentations
Slide control is a tool for controlling your presentations from your phone, tablet, or computer.
How to use Guide/Demo is available here.
This uses websockets as a main communication channel between the web and the desktop application.
Backend uses Node.js, TypeScript, and Docker for easier deployment.
The Web client is built with React using Vite, styled with TailwindCSS and Shadcn UI components.
The desktop client is powered by the ElectronJs framework.
In the RnD, I experemented controlling the computer using a chrome extension, but I failed at it due to sandbox restrictions. One drawback was that we cant access anything outside the browser. I got to know that I have to use a desktop app to have more freedom to do things and Electron was the obvious choice considering the timing and tech stack.
So, In the current implementation, I send commands from the web app via websocket to the desktop app (routed via server). According to the command, the NodeJS mimics the behaviour of keyboard arrow keys. I use a fork of nut-js for this purpose as nutjs is no longer free. The authors have given permission for creating and distributing forks read more.
Socket routing causing little bit of latency
Sessions are stored in-memory at server which is not a good idea if this scales or users have longer sessions. Need to shift to something like Redis.
The window needs to be an active window.
⚠️ Current versions of desktop apps is not code signed and hence might create some issue while installing them on your computers. (I will create a detailed guide on how to deal with this)
Add support for local networks such as Bluetooth or Wifi
Controll with gestures and volume buttons of mobile
Switch to Redis for storing sessions
Explore more sophisticated technologies such as webRTC to reduce the latency
I see this project going in the direction of solving multiple small use cases, such as media control, presentation control, etc. I will see how this goes and accordingly make it better. If you have any suggestions or feedback, please let me know.
I am open to any suggestions and contributions. Please feel free to open an issue or a PR and get started. You can find the Installation guide. I have already added a few issues which you can pick up and get started.
Comments