Added Readme with install instructions

This commit is contained in:
simon 2026-05-26 17:12:32 +02:00
parent af4c944de7
commit 66543b75d4

107
README.md Normal file
View File

@ -0,0 +1,107 @@
# 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 a square SVG item template (writes to data/svg_template/)
./printer-backend template -o my_item.svg -s 80 -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`.