Files
luxcollection/README.md
2025-10-02 14:01:27 +02:00

1.9 KiB
Executable File

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 from web/templates/index.html
  • /counter — HTMX-powered counter snippet with server-side state
  • /time — current server timestamp
  • /static/* — vendored assets from web/static
  • /media/* — runtime media files served from the configured directory

Configuration

The server looks for media files in the following order:

  1. A directory specified via --media-dir on the command line.
  2. The media_dir value in an optional JSON config file passed with --config.
  3. A media directory 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.