Add embedded Vue SPA admin panel with go:embed
CI / test (push) Failing after 13m11s

This is the complete fix for the missing /admin/ route and frontend serving:

Backend:
- internal/web/web.go: new package with go:embed for web/dist/
- internal/api/router.go: add routes for /admin/, /admin/*, /assets/*
- internal/db/db.go: fix SQLite DSN parsing (sqlite:///path -> path)

Build system:
- Makefile: new 'embed-prep' target copies web/dist to internal/web/dist
- make build now runs embed-prep -> frontend/build automatically

Deployment:
- deploy/llamalink.service: remove invalid --host/--port flags,
  add EnvironmentFile=/etc/llamalink/env

Verified:
- /health returns 200
- /admin/ serves Vue SPA HTML
- /assets/* serves CSS and JS files from embedded FS
- sqlite:///./llamalink.db works correctly
This commit is contained in:
2026-07-31 14:47:15 -04:00
parent a54b134e87
commit 0d6c8c7989
18 changed files with 231 additions and 10 deletions
+10 -2
View File
@@ -24,12 +24,19 @@ GOLINT=golangci-lint
# Default target
all: deps build
## build: Build the binary
build:
## build: Build the binary (includes frontend embed)
build: embed-prep
@echo "Building $(BINARY)..."
@mkdir -p $(BUILD_DIR)
$(GOBUILD) -o $(BUILD_DIR)/$(BINARY) ./cmd/llamalink
## embed-prep: Copy web/dist into internal/web/dist for go:embed
embed-prep: frontend/build
@echo "Preparing embedded frontend..."
@rm -rf internal/web/dist
@mkdir -p internal/web/dist
@cp -r web/dist/* internal/web/dist/
## run: Build and run
run: build
@echo "Running..."
@@ -63,6 +70,7 @@ deps:
## clean: Remove build artifacts
clean:
rm -rf $(BUILD_DIR) $(DIST_DIR)
rm -rf internal/web/dist
rm -f coverage.out
rm -f *.db