# Alox printer backend HTTP backend and admin UI for managing print plates, item SVG templates, layout configurations, and PDF previews. ## Requirements | Requirement | Required for | Notes | |-------------|--------------|-------| | **Go 1.26+** | Build and run | See `go.mod` for the exact toolchain version. | | **`rsvg-convert`** | PDF export only | Part of [librsvg](https://wiki.gnome.org/Projects/LibRsvg). The server starts without it; PDF endpoints return an error until it is installed and on `PATH`. | ### Installing `rsvg-convert` Examples: ```bash # Debian / Ubuntu sudo apt install librsvg2-bin # Fedora sudo dnf install librsvg2-tools # Arch / Manjaro sudo pacman -S librsvg # macOS (Homebrew) brew install librsvg ``` Verify: ```bash rsvg-convert --version ``` ## Build From the repository root: ```bash go build -o printer-backend . ``` ## Run Start the API and admin servers from the **repository root** (or any directory where you want the `data/` folder to live): ```bash ./printer-backend serve ``` Defaults (no config file): - **API:** `http://127.0.0.1:8080` - **Admin dashboard:** `http://127.0.0.1:8081` Stop with `Ctrl+C`. ### Optional configuration Copy `config.example.json` and pass it with `--config`: ```bash cp config.example.json config.json ./printer-backend serve --config config.json ``` | Field | Default | Description | |-------|---------|-------------| | `host` | `127.0.0.1` | Bind address for both servers | | `api_port` | `8080` | REST API port | | `admin_port` | `8081` | Admin UI port | Legacy field `port` is still accepted and maps to `api_port` when `api_port` is unset. ## Data directory All runtime data is stored under `data/` relative to the **current working directory**: ``` data/ plates/ # plate definitions (JSON) svg_template/ # item SVG files and metadata configurations/ # plate + item + spacing presets (JSON) ``` Directories are created automatically when you save plates, items, or configurations. Run `serve` from the project root if you want to use the bundled sample data. ## Other commands ```bash # Print version ./printer-backend version # Generate an SVG item template (writes to data/svg_template/) ./printer-backend template -o my_item.svg -w 100 -H 50 -r 8 -b 2 -m 5 -p 3 # Square shortcut: -s 80 sets width and height ./printer-backend template -o square.svg -s 80 -r 5 -b 2 -m 5 -p 3 ``` ## Quick check After starting the server: ```bash curl -s http://127.0.0.1:8080/health ``` Open the admin UI in a browser at `http://127.0.0.1:8081`.