
### Development Guide
[Discord](https://jetkvm.com/discord) | [Website](https://jetkvm.com) | [Issues](https://github.com/jetkvm/cloud-api/issues) | [Docs](https://jetkvm.com/docs)
[](https://twitter.com/jetkvm)
[](https://goreportcard.com/report/github.com/jetkvm/kvm)
# JetKVM Development Guide
This guide provides comprehensive information for developing, testing, and debugging JetKVM. Whether you're adding new features, fixing bugs, or contributing to the project, this document will help you get started.
## Prerequisites
Before you begin development, ensure you have the following tools installed:
- **Go 1.24.4+** - Backend development
- **Node.js 22.15.0** - Frontend development
- **npm** - Package management (comes with Node.js)
- **Make** - Build automation
- **Git** - Version control
- **SSH access** - For device deployment and debugging
### Verify Installation
```bash
go version # Should show Go 1.24.4+
node --version # Should show v22.15.0
npm --version # Should show npm version
make --version # Should show Make version
```
## Project Structure
```
/kvm/
├── main.go # Main application entry point
├── config.go # Configuration management
├── web.go # Web server and API endpoints
├── Makefile # Build automation
├── dev_deploy.sh # Development deployment script
├── go.mod # Go module dependencies
├── ui/ # Frontend React application
│ ├── src/
│ │ ├── routes/ # Page components
│ │ ├── components/ # Reusable UI components
│ │ ├── hooks/ # React hooks
│ │ └── api.ts # API client
│ ├── dev_device.sh # Frontend dev server script
│ └── package.json # Frontend dependencies
├── internal/ # Internal Go packages
│ ├── logging/ # Logging utilities
│ ├── network/ # Network configuration
│ └── usbgadget/ # USB gadget management
├── resource/ # Static resources
└── bin/ # Built binaries
```
## Development Approaches
### 1. Full Device Development (Recommended)
This approach requires an actual JetKVM device and provides the most complete development environment.
#### Quick Start
```bash
# Deploy to your JetKVM device
./dev_deploy.sh -r