51 lines
1.5 KiB
Markdown
Executable File
51 lines
1.5 KiB
Markdown
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/
|
|
├── assets/ # Runtime asset directory served from disk (/assets/*)
|
|
├── 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
|
|
|
|
```bash
|
|
go run ./cmd/luxtools
|
|
```
|
|
|
|
The server listens on [http://127.0.0.1:5000](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`
|
|
- `/assets/*` — runtime assets from the shared `assets` directory
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
go test ./...
|
|
```
|
|
|
|
## Building for deployment
|
|
|
|
```bash
|
|
go build -o bin/luxtools ./cmd/luxtools
|
|
```
|
|
|
|
The resulting binary is compatible with the provided systemd unit located in `deploy/luxtools.service`.
|