๐ฏ Experience seamless remote control with cutting-edge Android architecture
โก Real-time WebSocket communication โข ๐จ Modern Material 3 UI โข ๐ง MVVM Architecture
๐ Quick Start โข โจ Features โข ๐๏ธ Architecture โข ๐ค Contributing โข ๐ฃ๏ธ Roadmap
๐ฅ The next-generation remote control app that developers actually want to contribute to!
Zenflow Remote isn't just another remote control app โ it's a showcase of modern Android development! Built from the ground up with the latest tech stack, this project demonstrates how to create production-ready Android applications that are both powerful for users and delightful for developers.
|
|
| ๐ฏ Precision Movement | Pixel-perfect cursor control with configurable sensitivity |
| ๐ Multi-touch Gestures | Two-finger scrolling, pinch-to-zoom, three-finger swipe |
| ๐ฑ๏ธ Smart Clicking | Left click, right click, middle click, drag & drop |
| ๐ฎ Gaming Mode | Low-latency mode for gaming and precise applications |
| ๐ฑ Native Integration | Uses your phone's keyboard + custom virtual keys |
| ๐ง Function Keys | F1-F12, Ctrl, Alt, Win, Esc, Delete, and more |
| โจ๏ธ Key Combinations | Ctrl+C, Alt+Tab, Win+R - all keyboard shortcuts work |
| ๐ต Media Controls | Play/Pause, Volume, Next/Previous track |
| โก Real-time WebSocket | Sub-10ms latency with automatic reconnection |
| ๐ Auto-Reconnect | Never lose connection with intelligent retry logic |
| ๐ฅ Hotspot Mode | No WiFi? No problem! Direct device connection |
| ๐ Connection Monitoring | Real-time status, logs, and performance metrics |
| Feature | ๐ Zenflow | ๐ฑ Other Apps |
|---|---|---|
| ๐๏ธ Architecture | โ Modern MVVM + Clean Architecture | โ Legacy MVC patterns |
| ๐จ UI Framework | โ 100% Jetpack Compose | โ XML-based Views |
| โก Performance | โ <10ms latency, Coroutines | โ High latency, blocking calls |
| ๐ Networking | โ Modern Ktor WebSocket | โ Basic HTTP polling |
| ๐ Dependencies | โ Hilt DI, testable code | โ Tight coupling, hard to test |
| ๐ Updates | โ Reactive StateFlow/LiveData | โ Manual UI updates |
| ๐ฑ Design | โ Material 3, Dark theme | โ Outdated UI designs |
| ๐ ๏ธ Developer Experience | โ Open source, clean code | โ Closed source, messy code |
| ๏ฟฝ Hotspot Mode | โ Direct connection, no WiFi needed | โ WiFi network required |
| ๐ Debugging | โ Real-time logs, test server | โ No debugging tools |
๐ฆ Zenflow Remote
โโโ ๐จ UI Layer (Jetpack Compose)
โ โโโ ๐บ Touchpad Screen - Advanced multi-touch control
โ โโโ โจ๏ธ Keyboard Screen - Virtual keyboard interface
โ โโโ ๐ Connection Screen - Network setup and management
โ โโโ ๐งญ Navigation - Seamless screen transitions
โโโ ๐ง ViewModel Layer (MVVM)
โ โโโ TouchpadViewModel - Gesture and input processing
โ โโโ State Management - Reactive UI updates
โโโ ๐ Network Layer
โ โโโ KtorWebSocketManager - Modern coroutine-based networking
โ โโโ Connection Management - Auto-reconnect & error handling
โโโ ๐ Dependency Injection (Hilt)
โโโ NetworkModule - WebSocket dependencies
โโโ DatabaseModule - Local storage setup
- Multi-touch Support - Smooth cursor movement and gestures
- Right-click Detection - Context menu support
- Scroll Gestures - Two-finger scrolling
- Drag & Drop - File manipulation support
- Connection Status - Real-time connectivity indicators
- System Keyboard Integration - Native Android keyboard support
- Custom Virtual Keys - Function keys (F1-F12), Ctrl, Alt, Win
- Special Characters - Full ASCII character set
- Modifier Keys - Shift, Ctrl, Alt combinations
- Responsive Layout - Adaptive to different screen sizes
- IP Address Input - Validation and connection setup
- Connection Status - Visual indicators and logging
- Auto-discovery - Network scanning capabilities
- Settings Panel - Connection preferences and debugging
๐ KtorWebSocketManager
โโโ ๐ Auto-reconnection (3 attempts)
โโโ ๐ Keep-alive mechanism (30s ping)
โโโ โก Coroutine-based async operations
โโโ ๐ Connection state flow
โโโ ๐ก๏ธ Error handling & recovery{
"type": "touchpad|keyboard|command",
"action": "move|click|key_press",
"data": {
"x": 100, "y": 200,
"button": "left|right|middle",
"key": "a", "modifiers": ["ctrl"]
},
"timestamp": "2025-08-24T12:00:00Z"
}- ๐จ Jetpack Compose - Declarative UI with Material 3
- ๐งญ Navigation Compose - Type-safe navigation
- ๐ฑ ViewBinding - Safe view access
- ๐ StateFlow/LiveData - Reactive state management
- โก Kotlin Coroutines - Structured concurrency
- ๐ Hilt - Dependency injection framework
| ๐ฑ Android Device | API 24+ (Android 7.0+) |
| ๐ป PC/Laptop | Windows, Mac, or Linux |
| ๐ Network | WiFi or Mobile Hotspot |
| ๐ Python | 3.7+ (for test server) |
๐ฅ Click here for instant setup with hotspot!
1. ๐ฑ Enable Mobile Hotspot: Settings โ Hotspot & Tethering
2. ๐ Note hotspot name and password
3. ๐ฏ Your phone IP will be: 192.168.43.11. ๐ Connect PC to your phone's hotspot
2. ๐ Clone Zenflow: git clone https://github.com/divinixx/zenflow.git
3. ๐ Start server: cd zenflow && python start_test_server.bat1. ๏ฟฝ Install and open Zenflow Remote
2. ๏ฟฝ Go to Connection screen
3. ๐ Enter: 192.168.43.1:8080
4. โ
Tap Connect!๐ Done! Start controlling your PC!
๐ Both devices on same WiFi network
# Windows
ipconfig | findstr IPv4
# Mac/Linux
ifconfig | grep inet# Download and run
git clone https://github.com/divinixx/zenflow.git
cd zenflow
python start_test_server.bat1. ๐ฑ Open Zenflow Remote app
2. ๐ Navigate to Connection screen
3. ๐ Enter PC IP: 192.168.1.XXX:8080
4. ๐ Tap "Connect"
5. โ
Start controlling!๐ ๏ธ Full development environment
1. ๏ฟฝ Clone: git clone https://github.com/divinixx/zenflow.git
2. ๏ฟฝ Open in Android Studio
3. ๏ฟฝ Sync Gradle dependencies
4. ๐ฑ Run on device/emulator# Install dependencies
pip install websockets
# Run with custom configuration
python test_server.py --host 0.0.0.0 --port 8080
# Or use the batch file
./start_test_server.bat# View WebSocket messages
python test_server.py --verbose
# Monitor connection logs in app
Settings โ Show Logs โ Watch real-time traffic| ๐ฅ Hotspot Mode | ๐ WiFi Mode |
|
|
@Inject
class TouchpadViewModel(
private val webSocketManager: KtorWebSocketManager
) : ViewModel() {
// Connect to server
suspend fun connect(ip: String, port: Int = 8080) {
webSocketManager.connect(ip, port)
}
// Send touchpad movement
fun sendMouseMove(deltaX: Float, deltaY: Float) {
val message = MouseMessage(
type = "touchpad",
action = "move",
data = MouseData(deltaX, deltaY)
)
webSocketManager.sendMessage(message)
}
// Send keyboard input
fun sendKeyPress(key: String, modifiers: List<String> = emptyList()) {
val message = KeyboardMessage(
type = "keyboard",
action = "key_press",
data = KeyData(key, modifiers)
)
webSocketManager.sendMessage(message)
}
}// Observe connection state
webSocketManager.connectionState.collect { state ->
when (state) {
"Connected" -> showConnectedUI()
"Connecting" -> showLoadingUI()
"Disconnected" -> showDisconnectedUI()
"Error" -> showErrorUI()
}
}๐จ Presentation Layer
โโโ ๐ฑ Jetpack Compose UI
โโโ ๐ญ Material 3 Theme
โโโ ๐งญ Navigation Compose
๐ง Domain Layer
โโโ ๐ ViewModels (MVVM)
โโโ ๐ Use Cases
โโโ ๐ State Management
๐พ Data Layer
โโโ ๐ WebSocket Repository
โโโ ๐ Dependency Injection
โโโ ๐ช Local Storage (DataStore)
- StateFlow: Reactive UI updates with lifecycle awareness
- collectAsStateWithLifecycle: Automatic subscription management
- Remember: Efficient recomposition with state preservation
- Ktor Coroutines: Non-blocking async operations
- Connection Pooling: Efficient resource management
- Automatic Reconnection: Resilient network handling
- Message Queuing: Offline message handling
- LazyColumn: Efficient list rendering
- State Hoisting: Optimized component recomposition
- ViewInterop: AndroidView for custom components
- ๐ก๏ธ Input Validation: IP address and message validation
- ๐ Local Network Only: Designed for trusted networks
- ๐ Connection Logging: Comprehensive activity tracking
- ๐ซ Error Boundaries: Graceful error handling
implementation("androidx.core:core-ktx:1.15.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.2")
implementation("androidx.activity:activity-compose:1.9.3")implementation("androidx.compose.ui:ui:1.7.8")
implementation("androidx.material3:material3:1.3.1")
implementation("androidx.navigation:navigation-compose:2.8.5")implementation("io.ktor:ktor-client-core:3.2.3")
implementation("io.ktor:ktor-client-websockets:3.2.3")
implementation("com.google.code.gson:gson:2.13.1")implementation("com.google.dagger:hilt-android:2.48")
implementation("androidx.hilt:hilt-navigation-compose:1.2.0")- ๐ SSL/TLS Support - Encrypted WebSocket connections (WSS)
- ๐ Authentication System - User login and device pairing
- ๐ก๏ธ Certificate Validation - Secure connection verification
- ๐ฏ Gesture Recognition - Custom touchpad gestures
- ๐ Media Controls - Volume, play/pause, skip
- ๐บ Display Controls - Monitor switching, resolution changes
- ๐ฅ๏ธ Multi-Monitor Support - Extended desktop control
- ๐ Custom Themes - Personalized color schemes
- ๐ง Advanced Settings - Sensitivity, gesture configuration
- ๐ Analytics Dashboard - Usage statistics and insights
- ๐ Notifications - Connection alerts and status updates
- ๐ Auto-Discovery - Automatic PC detection on network
- ๐ก Multiple Connections - Support for multiple PCs
- โ๏ธ Cloud Sync - Settings backup and restoration
- ๐ฑ Hotspot Mode - Direct device-to-device connection
- โก < 10ms Latency - Ultra-responsive control
- ๐ Battery Optimization - Extended usage time
- ๐ฑ Memory Efficiency - < 50MB RAM usage
- ๐ Network Optimization - Minimal bandwidth usage
We welcome contributions! Here's how you can help:
- Use GitHub Issues with detailed reproduction steps
- Include device info, Android version, and logs
- Provide network configuration details
- Open GitHub Discussions for new ideas
- Provide use cases and implementation suggestions
- Consider backward compatibility
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow Kotlin coding standards
- Add comprehensive tests
- Submit a pull request
- Follow MVVM architecture patterns
- Use Jetpack Compose best practices
- Implement proper error handling
- Add documentation for public APIs
- Maintain 80%+ test coverage
MIT License
Copyright (c) 2025 Zenflow Remote
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Built with โค๏ธ by developers, for developers
Showcasing the best of modern Android architecture
|
โญ Star Us! Show your support |
๐ด Fork & Hack! Make it your own |
๐ Report Issues! Help us improve |
๐ก Share Ideas! Shape the future |
Kotlin |
Android |
Compose |
๐๏ธ Architecture: MVVM โข ๐จ UI: Material 3 โข ๐ Network: WebSocket โข ๐ DI: Hilt โข โก Async: Coroutines
๐ฏ Made with โค๏ธ by @divinixx in India
Zenflow Remote โข Powered by Kotlin & Jetpack Compose โข MIT License
โญ If this project helped you, please give it a star! โญ
