{"id":22270788,"url":"https://github.com/leobel96/stellarpad","last_synced_at":"2025-08-17T14:43:30.595Z","repository":{"id":180987813,"uuid":"253022982","full_name":"leobel96/stellarPad","owner":"leobel96","description":"Use your touch device as a wireless Graphic Tablet","archived":false,"fork":false,"pushed_at":"2020-10-06T18:51:48.000Z","size":758,"stargazers_count":5,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T12:24:01.818Z","etag":null,"topics":["css","electronjs","graphic","html","javascript","pwa","socket-io","stylus","tablet","webrtc"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leobel96.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-04-04T14:49:02.000Z","updated_at":"2024-03-14T09:03:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"b0ebba7b-53e5-4d5a-8bca-3b0226abe834","html_url":"https://github.com/leobel96/stellarPad","commit_stats":null,"previous_names":["leobel96/stellarpad"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/leobel96/stellarPad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leobel96%2FstellarPad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leobel96%2FstellarPad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leobel96%2FstellarPad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leobel96%2FstellarPad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leobel96","download_url":"https://codeload.github.com/leobel96/stellarPad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leobel96%2FstellarPad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270862055,"owners_count":24658697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","electronjs","graphic","html","javascript","pwa","socket-io","stylus","tablet","webrtc"],"created_at":"2024-12-03T12:09:30.394Z","updated_at":"2025-08-17T14:43:30.497Z","avatar_url":"https://github.com/leobel96.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"./images/logo.svg\"\u003e\n\n# Why?\nI have an Ipad Pro and I really felt the necessity to use it as graphic tablet for my PC with my favourite softwares. At the moment only macOS natively supports this function and the third-party alternative are pretty expensive and closed-source. So I asked myself: why not developing a simple, open and cross-platform alternative? Why not take advantage of all the modern web technologies (see chapter [\"A little bit of technical information\"](#a-little-bit-of-technical-information))?\n\n# Structure\nStellar Pad consists of 3 main parts:\n- Server: a simple server application currently hosted on [glitch.com](https://stellarpad.glitch.me). Its purpouse is to serve `videoReceiver` and handle initial handshake\n- videoSender: an electron application intended to be installed on the device (i.e. PC) that will send the video stream and will be controlled by the `videoReceiver`. Only Windows and Linux supported at the moment\n- videoReceiver: a PWA (Progressive Web Application) intended to be installed on the device that will receive the video stream and will control the `videoSender`\n\n# Usage\n## videoSender\n`videoSender` can be found in the realeases: download it according to your OS. A portable x64 version for Windows and portable AppImage version for Linux are present; simply run them.\n\n## videoReceiver\nThe `videoReceiver` is a [PWA](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) and can be reached visiting https://stellarpad.glitch.me. Once correctly opened the website, you will be asked to install the PWA; simply follow the passages and a Stellar Pad icon will be added to your homescreen (like a classic application).\n⚠IMPORTANT⚠: [some internet providers block Glitch](https://support.glitch.com/t/i-cant-see-any-glitch-me-project/13992/2) (why?). If you encounter any problem with https://stellarpad.glitch.me (website unreachable or blank page), it is possible you have to [change your DNS](https://developers.google.com/speed/public-dns/docs/using) \u003cb\u003e on both `videoSender` device and `videoReceiver` device \u003c/b\u003e.\n\n## Supported devices\n`videoReceiver` has been tested on an Ipad Pro 2nd generation and on an Android 10 smartphone but should work on all recent iOS and Android devices while `videoSender` has been tested on a Windows 10 laptop and an Ubuntu laptop but should work on all recent Windows and Linux devices.\n\n# A little bit of technical information\nThe communication between `videoReceiver` and `videoSender` uses a \u003cb\u003elocal\u003c/b\u003e WebRTC for both video and data (finger/stylus movements). In order to initialize the WebRTC, [many passages are required](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Simple_RTCDataChannel_sample). Due to the fact that both PWA and WebRTC require a secure HTTPS connection, an external secure server had to be implemented in order to guarantee a secure handshake (obtain HTTPS certificates for local domains is a mess). The connection between `videoReceiver`, `videoSender` and `server` is established using [Socket.io](https://socket.io/): a pretty fast and easy to handle real-time engine. After the handshake both `videoReceiver` and `videoSender` disconnect from `server` and all the packets remain within local network. \nWhen a stylus or finger moves on the `videoReceiver`'s screen, a movement message is sent to `videoSender` through WebRTC datachannel and, then, mouse is moved using pretty fast C functions called though Foreign Function Interface (FFI). In this way, even if video latency is not very low, mouse latency is kept very low and is nearly negligible.\n\n# Disclaimer\nStellar Pad is an amateur project developed by me in my spare time. It is distributed as-is and I assume no responsibility for any problem/damage it could provide. Use at your own risk.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleobel96%2Fstellarpad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleobel96%2Fstellarpad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleobel96%2Fstellarpad/lists"}