Skip to content

moderathor12/PanelDroid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

PanelDroid

Turn any Android device into a second screen and control panel for your computer.

Release License Stars Issues Platform Kotlin

Features · Apps · Getting Started · Architecture · Roadmap · Contributing


What is PanelDroid?

PanelDroid is an open-source Android application that transforms any phone or tablet — old or new — into a fully functional secondary control panel for your PC. Instead of letting unused hardware collect dust, PanelDroid gives it a new purpose: a live dashboard showing system metrics, media controls, programmable macro buttons, weather, Discord status, and more.

It connects to your computer over LAN (WiFi) or USB (ADB tunnel) using PanelDroid's own open protocol. No cloud. No subscription. Everything runs locally on your network.

Your device. Your panel.


✨ Features

  • Zero-waste philosophy — repurpose old Android devices instead of discarding them
  • LAN + USB connectivity — works over WiFi or wired ADB tunnel for low-latency response
  • Auto-discovery — finds the PanelDroid Bridge on your network automatically via mDNS
  • Drag-and-drop grid layout — arrange widgets freely, separate layouts for portrait and landscape
  • Always-On Display mode — OLED-optimized, keeps the panel visible without draining battery
  • Haptic feedback — physical response on every macro button press
  • Sensor triggers — use phone sensors (accelerometer, proximity) as custom PC actions
  • Theme system — Dark / Light / AMOLED / System, custom accent colors, wallpaper support
  • Fully local — no accounts, no telemetry, no internet required

📱 Built-in Apps

App Description
MediaPanel Control music and video playback on your PC (Spotify, VLC, system media)
SysPanel Live CPU, RAM, GPU, disk, and network monitoring
MacroPad Up to 12 programmable shortcut buttons with custom icons and haptic feedback
WeatherPanel Current conditions and hourly forecast
ClockPanel Clock, date, timer, and stopwatch
DiscordPanel Active voice channel status and online friends
NotifyPanel Mirror PC notifications to your device in real time
VolumePanel Per-application audio mixer for Windows

🚀 Getting Started

Requirements

  • Android 8.0 (API 26) or higher
  • PC running PanelDroid Bridge (lightweight background server, ~5 MB)
  • Both devices on the same WiFi network, or connected via USB

Installation

Option A — F-Droid (recommended)

Coming soon

Option B — Google Play

Coming soon

Option C — Manual APK

Download the latest APK from the Releases page and install it directly.

Setting Up the Bridge (PC)

PanelDroid requires the PanelDroid Bridge running on your PC — a small background server that exposes system APIs to your device.

npm install -g paneldroid-bridge
paneldroid-bridge start

One-time setup. The bridge starts automatically on login after the first run.

First-time Setup

  1. Start PanelDroid Bridge on your PC
  2. Open PanelDroid on your Android device
  3. Tap Connect — it will find your PC automatically
  4. If auto-discovery fails, enter the server IP manually
  5. Pick your layout, add widgets, done

🏗 Architecture

┌──────────────────────────┐       WebSocket / ADB Tunnel       ┌──────────────────────────┐
│  PC — PanelDroid Bridge  │ ◄─────────────────────────────────► │  Android — PanelDroid    │
│                          │             LAN / USB               │                          │
│  • System API access     │                                     │  • Jetpack Compose UI    │
│  • Plugin backends       │                                     │  • Widget grid engine    │
│  • Plugin marketplace    │                                     │  • Foreground service    │
└──────────────────────────┘                                     └──────────────────────────┘

Android stack:

  • Language: Kotlin
  • UI: Jetpack Compose
  • Networking: OkHttp + WebSocket
  • State: ViewModel + StateFlow + Hilt
  • Storage: DataStore (Preferences)
  • Background: Foreground Service (persistent connection)

Bridge stack:

  • Runtime: Node.js
  • Language: TypeScript
  • Transport: WebSocket (JSON protocol)
  • OS APIs: Exposed via native Node addons per platform (Windows / macOS / Linux)

🗺 Roadmap

Version Target Status
v0.1 Connection system + MediaPanel + ClockPanel 🔨 In development
v0.2 Grid layout engine + widget system ⏳ Planned
v0.3 Plugin API for community apps ⏳ Planned
v0.4 WebView renderer for web-based plugins ⏳ Planned
v0.5 MacroPad + sensor trigger system ⏳ Planned
v1.0 F-Droid + Google Play release 🎯 Target

🤝 Contributing

Contributions are welcome. Here is how to get started:

# Fork the repository, then:
git clone https://github.com/yourusername/paneldroid.git
cd paneldroid

Open in Android Studio, let Gradle sync, and run on your device or emulator.

Before submitting a pull request:

  • Make sure your code compiles and runs without errors
  • Follow the existing Kotlin code style (ktlint is configured)
  • For new features, include a short description of what was added and why
  • For bug fixes, reference the issue number in your commit message

Reporting issues: Use GitHub Issues. Include your Android version, PanelDroid version, and steps to reproduce.


📁 Project Structure

paneldroid/
├── app/src/main/java/az/paneldroid/
│   ├── core/
│   │   ├── connection/        # WebSocket, ADB tunnel, mDNS discovery
│   │   ├── protocol/          # PanelDroid message protocol
│   │   └── service/           # Foreground connection service
│   ├── apps/
│   │   ├── base/              # Plugin base class and registry
│   │   ├── media/             # MediaPanel
│   │   ├── sysmonitor/        # SysPanel
│   │   ├── macropad/          # MacroPad
│   │   └── webview/           # Web-based plugin renderer
│   ├── ui/
│   │   ├── layout/            # Grid layout engine
│   │   ├── theme/             # Theme manager
│   │   ├── screens/           # Dashboard, AppPicker, Settings, Connection
│   │   └── widgets/           # Per-plugin Compose UI components
│   └── data/
│       ├── preferences/       # DataStore
│       └── models/            # Data classes
└── bridge/                    # PanelDroid Bridge (Node.js / TypeScript)

📄 License

MIT License — see LICENSE for details.


Built with ❤️ — because your old phone deserves better than a drawer.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors