I work as an Android developer at a large retailer, on the app that the in-store employees use to see their schedules, view product details, get support, etc. Part of our engineering on-call rotation involves helping these in-store employees with any app issues they may encounter. There are always a few times every rotation where I know solving someone's problem would be way easier if I could just see their screen as if I were in-store with them.
However, many of these employees are non-technical and wouldn't want to go through the onboarding of TeamViewer or Zoom, are under time constraints in a busy store, or (understandably) just wouldn't know how to get set up.
As a side project over the past few weekends, I've been building an Android screen sharing tool called Zipshare (https://www.getzipshare.com, demo video: https://www.youtube.com/watch?v=Iuc3HBIuMZE) that aims to be absolutely as easy as possible to use for the person sharing their screen. All the sharer needs to do is receive an email (or eventually a text) on their Android device and click a link. They will be sent to the Play Store, and upon launching the app, will automatically be sent to their session. Users don't need to create an account or enter a meeting code - there's literally one screen in the app ("xyz@abc.com invited you to share your screen, would you like to?") In fact, I originally wanted to use Play Store Instant Apps to eliminate the installation step entirely, but you can't open a raw socket from an Instant App, which I currently depend on... [1]
You can try the live demo by entering your email address and waiting on the next page, while clicking the link you receive on an Android device. Allow the screen share and you'll see it appear in your browser on the first device. When this is more built out, support agents will be able to sign in to their account and click a button to generate a new link/send it out. I also want to integrate with platforms like ServiceNow, PagerDuty, and Zendesk to allow generating screen sharing sessions directly from tickets.
I focused on Android for this initial version because the wide variety of devices makes giving support more difficult than on iOS, and because I have way more experience with Android :)
Other features I want to include are automatic notification suppression while sharing (for privacy), an "instant connectivity check" that reports basic system state to the agent like cell/Wi-Fi signal strength and whether a VPN is enabled, and an annotation feature so that agents can draw attention to certain areas of the screen.
My goal with Zipshare was to do one thing and make the experience as streamlined as possible. For example, there's no voice or video calling because chances are the two parties will already be on some other kind of call.
Technical details:
* Screen sharing: WebRTC with signaling provided by a self-hosted LiveKit server instance
* Android side: Kotlin, Jetpack Compose, LiveKit SDK, Play Store Referrer API to route the session ID through to the app install, "classic" Android 3rd party libraries (OkHttp, Retrofit, KotlinX serialization, ...)
* Website and API: Node.js, Express, two Pug templates, one CSS file, 50ish lines of JS excluding LiveKit, SQLite DB with one table.
Design details:
* Icon: Fiverr
* Colors: ChatGPT
* Landing page copy: The best I could come up with
Please give it a try and let me know what you think! I am eager to test this on as many devices as possible, especially older or low-end devices. I built this because I wanted it, but would it be useful for you or your team? Any feature requests?
[1] https://issuetracker.google.com/issues/191070661, naturally "Won't Fix", definitely something to hack around in the future
(note: I was given the OK to repost this for a second chance)