Luxtools (Go edition)
Luxtools is now implemented entirely in Go. The project serves a retro-styled HTMX interface backed by a lightweight Go HTTP server that mirrors the behaviour of the former Nim version.
Project layout
luxtools/
├── media/ # Runtime media directory served from disk (/media/*)
├── cmd/luxtools/ # Main program entrypoint
├── internal/server/ # HTTP server, handlers, helpers, and tests
├── web/
│ ├── static/ # Vendored front-end assets (HTMX, TUI.CSS, images)
│ └── templates/ # HTML templates rendered by the server
├── deploy/ # Deployment manifests (systemd unit, etc.)
├── go.mod # Go module definition
└── README.md # You're here
Prerequisites
- Go 1.22 or newer
Run the server
go run ./cmd/luxtools
The server listens on http://127.0.0.1:5000 and serves:
/— main page rendered fromweb/templates/index.html/counter— HTMX-powered counter snippet with server-side state/time— current server timestamp/static/*— vendored assets fromweb/static/media/*— runtime media files served from the configured directory
Configuration
The server looks for media files in the following order:
- A directory specified via
--media-diron the command line. - The
media_dirvalue in an optional JSON config file passed with--config. - A
mediadirectory located alongside the binary or in the current working directory.
Sample config file:
{
"media_dir": "/var/lib/luxtools/media"
}
Testing
go test ./...
Building for deployment
go build -o bin/luxtools ./cmd/luxtools
The resulting binary is compatible with the provided systemd unit located in deploy/luxtools.service.
Description
Languages
CSS
65.1%
Go
17.7%
JavaScript
12.2%
HTML
5%