212 lines
No EOL
5.1 KiB
Markdown
212 lines
No EOL
5.1 KiB
Markdown
# GSPro Remote
|
|
|
|
A companion application for GSPro golf simulator that allows remote control from any device on your network.
|
|
|
|
## 🎯 Overview
|
|
|
|
GSPro Remote is a web-based remote control application for GSPro golf simulator running on Windows. Control GSPro from your tablet, phone, or another PC without needing a keyboard nearby.
|
|
|
|
### Key Features
|
|
|
|
- **Touch-Friendly Interface** - Optimized for tablets and phones
|
|
- **All GSPro Shortcuts** - Full keyboard shortcut support via touch controls
|
|
- **Live Map Streaming** - Real-time streaming of the GSPro mini-map
|
|
- **mDNS Discovery** - Access via `gsproapp.local` on your network
|
|
- **Persistent Settings** - Configuration saved between sessions
|
|
- **Zero Cloud Dependencies** - Everything runs locally on your network
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Windows PC running GSPro
|
|
- Python 3.11+
|
|
- Node.js 20+
|
|
- GSPro golf simulator
|
|
|
|
### Installation
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/yourusername/gspro-remote.git
|
|
cd gspro-remote
|
|
```
|
|
|
|
2. Run the development setup:
|
|
```powershell
|
|
.\scripts\dev.ps1
|
|
```
|
|
|
|
This will:
|
|
- Install all backend dependencies
|
|
- Install all frontend dependencies
|
|
- Start both development servers
|
|
- Open the UI at http://localhost:5173
|
|
|
|
### Access Points
|
|
|
|
- **Frontend UI**: http://localhost:5173
|
|
- **Backend API**: http://localhost:5005
|
|
- **API Documentation**: http://localhost:5005/api/docs
|
|
- **mDNS Access**: http://gsproapp.local:5005
|
|
|
|
## 📁 Project Structure
|
|
|
|
```
|
|
gspro-remote/
|
|
├── backend/ # Python FastAPI backend
|
|
│ ├── app/
|
|
│ │ ├── api/ # API endpoints
|
|
│ │ │ ├── actions.py # Keyboard control
|
|
│ │ │ ├── vision.py # Screen streaming
|
|
│ │ │ ├── config.py # Configuration
|
|
│ │ │ └── system.py # System utilities
|
|
│ │ ├── core/ # Core functionality
|
|
│ │ │ ├── config.py # Config management
|
|
│ │ │ ├── input_ctrl.py # Windows input
|
|
│ │ │ ├── screen.py # Screen capture
|
|
│ │ │ └── mdns.py # mDNS service
|
|
│ │ └── main.py # FastAPI app
|
|
│ └── pyproject.toml # Python dependencies
|
|
│
|
|
├── frontend/ # React TypeScript frontend
|
|
│ ├── src/
|
|
│ │ ├── pages/ # Page components
|
|
│ │ ├── components/ # UI components
|
|
│ │ ├── api/ # API client
|
|
│ │ ├── stores/ # State management
|
|
│ │ └── App.tsx # Main app
|
|
│ └── package.json # Node dependencies
|
|
│
|
|
├── scripts/ # Development scripts
|
|
│ └── dev.ps1 # Windows dev script
|
|
│
|
|
└── PRD.md # Product requirements
|
|
```
|
|
|
|
## 🎮 Features
|
|
|
|
### Phase 1 (MVP) - Current
|
|
- ✅ Directional pad for aim control
|
|
- ✅ Club selection (up/down)
|
|
- ✅ Mulligan button
|
|
- ✅ Tee box navigation
|
|
- ✅ Map panel with streaming
|
|
- ✅ All GSPro keyboard shortcuts
|
|
- ✅ WebSocket-based streaming
|
|
- ✅ Configuration persistence
|
|
- ✅ mDNS service discovery
|
|
|
|
### Phase 2 (Planned)
|
|
- ⏳ OCR-based auto-detection
|
|
- ⏳ Visual marker tracking
|
|
- ⏳ Background monitoring
|
|
- ⏳ Advanced automation
|
|
|
|
### Phase 3 (Future)
|
|
- ⏳ Enhanced UI/UX
|
|
- ⏳ Subscription features
|
|
- ⏳ Extended documentation
|
|
|
|
## 🛠️ Development
|
|
|
|
### Backend Development
|
|
|
|
```bash
|
|
cd backend
|
|
python -m venv .venv
|
|
.venv\Scripts\activate
|
|
pip install -e ".[dev]"
|
|
uvicorn app.main:app --reload --host 0.0.0.0 --port 5005
|
|
```
|
|
|
|
### Frontend Development
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
Backend:
|
|
```bash
|
|
cd backend
|
|
pytest
|
|
```
|
|
|
|
Frontend:
|
|
```bash
|
|
cd frontend
|
|
npm test
|
|
```
|
|
|
|
## 📖 API Documentation
|
|
|
|
The backend provides a comprehensive REST API with WebSocket support for streaming.
|
|
|
|
### Key Endpoints
|
|
|
|
- `POST /api/actions/key` - Send keyboard input to GSPro
|
|
- `WS /api/vision/ws/stream` - WebSocket for map streaming
|
|
- `GET /api/config` - Get current configuration
|
|
- `GET /api/system/health` - Health check
|
|
|
|
Full API documentation available at http://localhost:5005/api/docs when running.
|
|
|
|
## 🔧 Configuration
|
|
|
|
Configuration is stored at `%LOCALAPPDATA%\GSPro Remote\config.json`
|
|
|
|
### Default Configuration
|
|
|
|
```json
|
|
{
|
|
"server": {
|
|
"host": "0.0.0.0",
|
|
"port": 5005,
|
|
"mdns_enabled": true
|
|
},
|
|
"capture": {
|
|
"fps": 30,
|
|
"quality": 85,
|
|
"resolution": "720p"
|
|
},
|
|
"gspro": {
|
|
"window_title": "GSPro",
|
|
"auto_focus": true
|
|
}
|
|
}
|
|
```
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### GSPro Window Not Found
|
|
- Ensure GSPro is running
|
|
- Check window title in configuration
|
|
- Run backend as administrator if needed
|
|
|
|
### Connection Issues
|
|
- Verify both frontend and backend are running
|
|
- Check Windows firewall settings
|
|
- Ensure devices are on same network
|
|
|
|
### Port Already in Use
|
|
- Check if another instance is running
|
|
- Change port in configuration
|
|
- Use `netstat -an | findstr :5005` to check
|
|
|
|
## 📝 License
|
|
|
|
MIT License - See LICENSE file for details
|
|
|
|
## 🤝 Contributing
|
|
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
## 📞 Support
|
|
|
|
For issues and questions:
|
|
- Create an issue on GitHub
|
|
- Check existing issues for solutions |