refactor: restructure to standard Go project layout (cmd/ + internal/)

- Move entry point to cmd/streamdeck-lets-go/
- Split package main into internal packages:
  - internal/deck: hardware control (Deck, events, brightness)
  - internal/render: key rendering, icons, fonts, PageManager
  - internal/web: HTTP API + embedded SPA
  - internal/daemon: event loop, autoswitch, screensaver, actions
- Add ConfigDir() to internal/config
- Export cross-package API (Deck, PageManager, WebServer, etc.)
- Move dist/arch/ → packaging/ with updated PKGBUILD/.SRCINFO
- Add Makefile (build, test, vet, fmt, install)
- Update README with new build commands and project structure
- Delete unused media.go stub
This commit is contained in:
Maksim Totmin
2026-08-26 10:35:20 +07:00
parent 598bbe9ff1
commit 41856e6aaa
45 changed files with 2506 additions and 2598 deletions
+18 -4
View File
@@ -27,7 +27,9 @@
### Install from source
```bash
go build -o streamdeck-lets-go .
make build
# or
go build -o streamdeck-lets-go ./cmd/streamdeck-lets-go
```
### Run
@@ -47,7 +49,19 @@ Open `http://localhost:9090` in your browser.
---
## Configuration
## Project structure
```
cmd/streamdeck-lets-go entry point (CLI: daemon, switch, discover)
internal/
config JSON config model, load/save/validate
deck Stream Deck hardware: open, render, brightness, events
render Key rendering, icon/fonts, PageManager, display outputs
web HTTP API + embedded Alpine.js SPA
daemon Event loop, autoswitch, screensaver, actions, gestures
packaging/ AUR PKGBUILD, systemd unit, udev rule
Makefile build, test, vet, fmt, install
```
The config file is stored at `~/.config/streamdeck-lets-go/config.json`. You can edit it manually or through the web UI.
@@ -371,9 +385,9 @@ After a configurable idle period the deck dims or shows a custom image.
## Building from source
```bash
git clone git@git.totmin.ru:en2zmax/streamdeck-lets-go.git
git clone git@github.com:totmin/streamdeck-lets-go.git
cd streamdeck-lets-go
go build -o streamdeck-lets-go .
make build
```
Dependencies: