https://github.com/yamanote1138/yardbird
Vue 3 web interface for controlling model railroad layouts via JMRI's WebSocket API
https://github.com/yamanote1138/yardbird
jmri model-trains railroad vuejs websocket
Last synced: about 1 month ago
JSON representation
Vue 3 web interface for controlling model railroad layouts via JMRI's WebSocket API
- Host: GitHub
- URL: https://github.com/yamanote1138/yardbird
- Owner: yamanote1138
- Created: 2016-01-06T09:12:55.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2026-05-10T19:59:22.000Z (about 2 months ago)
- Last Synced: 2026-05-10T21:35:02.907Z (about 1 month ago)
- Topics: jmri, model-trains, railroad, vuejs, websocket
- Language: Vue
- Size: 2.21 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
YardBird
A drag-and-drop layout control panel for model railroads.
---
YardBird is a pure frontend SPA that connects directly to your layout hardware — no backend server, no database. Build your control panel visually: create tabs, drag widgets onto a grid, and configure each one. Your layout is saved locally and can be exported as a YAML file.
## Features
- **Visual dashboard editor** — drag widgets onto a grid, resize, reorder tabs, import/export config
- **Locomotive throttles** — speed, direction, and function buttons from your JMRI roster
- **Turnouts** — toggle switch positions via JMRI / LCC
- **Lights** — toggle LCC lights, independent of track power
- **DC tram control** — JMRI-native tram loop control via a DCC-EX sub-connection, with configurable PWM frequency
- **Command station power** — per-connection power buttons with combined on/off in the header
- **Home Assistant** — control HA lights and switches from your dashboard
- **Responsive** — works on desktop, tablet, and mobile
## Quick start
### Docker
```bash
mkdir -p config
cp yardbird.example.yaml config/yardbird.yaml
$EDITOR config/yardbird.yaml # set your JMRI host
docker compose up -d
```
Open `http://localhost:9273`.
### Development
```bash
npm install
npm run dev # http://localhost:5173
```
See [docs/installation.md](docs/installation.md) for full setup details, including JMRI prerequisites and DCC-EX tram control.
## Configuration
Connection settings are managed through the UI and saved in localStorage. `yardbird.yaml` provides factory defaults — it is only read when no saved config exists (first run or after a reset).
See [docs/configuration.md](docs/configuration.md) for the full YAML schema, widget reference, and export/import format.
## Architecture
See [docs/architecture.md](docs/architecture.md) for the plugin system, config flow, Gridstack canvas details, and how to add new widget types.
## Tech Stack
| | |
|---|---|
| [Vue 3](https://vuejs.org/) + TypeScript | Composition API throughout |
| [Vite](https://vitejs.dev/) | Dev server and build tool |
| [Nuxt UI 4](https://ui.nuxt.com/) + [Tailwind CSS 4](https://tailwindcss.com/) | UI components and styling |
| [Gridstack](https://gridstackjs.com/) | Drag-and-drop grid canvas |
| [jmri-client](https://www.npmjs.com/package/jmri-client) | JMRI WebSocket communication |
| [js-yaml](https://github.com/nodeca/js-yaml) | Config file parsing and export |
## License
Private use only