Overview
ManageMyLED is a Mobile Device Management (MDM) and remote-control platform for TouchIT interactive flat-panel displays (IFPDs). It lets IT administrators enrol, monitor, configure, and remotely operate fleets of Android-powered displays from a single web portal, from anywhere - including live remote control of a panel’s screen and touch input. It is effectively a vertical MDM and remote-support suite for interactive displays in schools and corporate environments, where dozens or hundreds of panels need coordinated administration.
The system has three parts: a full-stack Next.js web portal (built solo - 132 commits), an on-device Android MDM agent (com.managemyled.android, built by a small team in Kotlin and Java) that registers as a Device Administrator, and a WebRTC remote-control path that streams the panel’s screen and injects the administrator’s input. The remote-control gesture pipeline is adapted from the open-source Headwind Remote project (Apache-2.0) and integrated with Agora/OpenVidu screen streaming. I owned the web portal end to end and co-developed the Android agent; this entry distinguishes what I built from what was integrated or shared.
Key Achievements
On the web portal (solo), I built the full-stack Next.js 12 + TypeScript application - 29 API routes backed by Prisma over MongoDB, with a 12-model schema covering NextAuth’s auth tables, OTP/reset-token records, RemoteSessionRequest, and the fleet entities Device, SerialNumber, PreInstallApp, Team, and Membership. That includes NextAuth-based authentication with email one-time-password login and password reset, the fleet dashboard (device grouping, heartbeat monitoring, and inventory keyed to licensed serial numbers), remote app and content management (bulk APK deployment, pre-install apps, wallpaper, alarms, notifications), team-based multi-tenant access control across 7 team API routes, and the browser-side remote-control UI - a Fabric.js canvas capturing mouse position/clicks and react-simple-keyboard forwarding keystrokes, alongside server-side Agora token issuance and Ansible-automated deployment.
The Android MDM agent (Kotlin + Java) was co-developed with a 3-person team. It registers as a Device Administrator to perform privileged operations - remote screen lock, reboot, and silent APK install/uninstall via PackageInstaller - plus on-device screen sharing over Agora and OpenVidu, an FCM push receiver, and a boot-persistent foreground service with OEM WiFi/Bluetooth control. Remote touch injection uses a gesture-dispatch Accessibility Service adapted from the open-source Headwind Remote project (Apache-2.0), integrated by the team with the Agora/OpenVidu streaming pipeline rather than written from scratch.
Technical Implementation
The web portal is a full-stack Next.js 12 TypeScript application - server and API in one codebase across 29 API routes - using Prisma over MongoDB. The UI runs on Ant Design with Zustand state, react-hook-form and Yup, and SWR/axios for data fetching. Server-side Agora token issuance lives at /api/agora/access-token via the agora-access-token RtcTokenBuilder.
The Android MDM agent (com.managemyled.android) registers as a Device Administrator through DevicePolicyManager, unlocking privileged operations issued from the portal - lock, reboot, and silent APK install/uninstall through PackageInstaller. It runs as a boot-persistent foreground service, auto-starting on RECEIVE_BOOT_COMPLETED, and reaches into OEM hardware (MediaTek CTA WiFi/Bluetooth control) for deeper integration with TouchIT panels. On-device screen capture is handled via Agora (ScreenSharing.kt) with an OpenVidu alternative, and push/wake comes through a Firebase Cloud Messaging receiver.
Remote control streams the panel’s screen into the browser over WebRTC (Agora/OpenVidu) while forwarding input the other way: a Fabric.js canvas overlays the stream to capture mouse position/clicks and react-simple-keyboard supplies keystrokes on the portal side. On the device, a gesture-dispatch Accessibility Service (GestureDispatchService) turns those into native touch gestures - adapted from the open-source Headwind Remote project (com.hmdm.control, Apache-2.0). Coordination uses complementary channels throughout: Socket.IO for live control/state, FCM to push commands and wake the agent, and Agora/OpenVidu for the screen media. Media (wallpapers, uploads) is processed through Transloadit, Sharp, and Jimp.
Impact & Results
The web portal drives the whole platform - enrolling, grouping, monitoring, and remotely managing a fleet of interactive displays from one place. The combination of the Device-Administrator-privileged Android agent and the WebRTC remote-control path enables genuine MDM-grade operations (remote lock, reboot, silent app deployment) and true remote support, where administrators see and operate a panel’s screen live without traveling to the device. Team-based access control scaled the platform to multi-tenant administration, and the 2022-2024 rebuild modernized the stack onto Next.js, Prisma, NextAuth, Socket.IO, Agora, and FCM.
Share