chore: add mise.toml for tool versions and tasks, thin Makefile shim

This commit is contained in:
2026-04-30 16:50:52 +02:00
parent 2055a46dee
commit 245edf1534
3 changed files with 80 additions and 40 deletions

View File

@@ -1,34 +0,0 @@
.PHONY: build build-web build-go dev test clean
# Build the production single binary (embeds the Svelte SPA)
build: build-web build-go
build-web:
@echo "==> Building Svelte frontend..."
cd web && npm run build
build-go:
@echo "==> Building Go binary (production, embeds web/build)..."
go build -tags production -o wotra ./cmd/wotra
# Development mode: run Go server + Vite dev server concurrently
dev:
@echo "==> Starting development servers..."
@echo " Go API: http://localhost:8080"
@echo " Vite UI: http://localhost:5173"
@trap 'kill 0' INT; \
AUTH_TOKEN=$${AUTH_TOKEN:-devtoken} go run ./cmd/wotra & \
cd web && npm run dev
# Run all Go tests
test:
go test ./...
# Install frontend dependencies
web/node_modules:
cd web && npm install
# Remove build artifacts
clean:
rm -f wotra
rm -rf web/build web/.svelte-kit

View File

@@ -15,30 +15,47 @@ A self-hosted working time tracker with a Go backend and a Svelte PWA frontend.
## Quick Start
Tool versions are declared in `mise.toml`. Install [mise](https://mise.jdx.dev) and run `mise install` once to get the correct Go and Node versions.
### Development
```bash
# 1. Set your auth token
export AUTH_TOKEN=mysecrettoken
# Install frontend dependencies (first time only)
mise run install
# 2. Start both servers
make dev
# Start both servers (Go API + Vite dev server)
mise run dev
# Go API: http://localhost:8080
# Vite UI: http://localhost:5173 (with /api proxy)
```
`AUTH_TOKEN` defaults to `devtoken` in `mise.toml`. Override it by setting the variable in your environment before running.
Open `http://localhost:5173`, go to **Settings**, enter your token.
### Production (single binary)
```bash
make build # builds web/ then embeds it in the Go binary
mise run build # builds web/ then embeds it in the Go binary
# Run
AUTH_TOKEN=mysecrettoken ./wotra
# open http://localhost:8080
```
### All tasks
| Task | Description |
|---------------|--------------------------------------------------|
| `mise run build` | Build production binary (web + Go) |
| `mise run build:web` | Build Svelte frontend only |
| `mise run build:go` | Build Go binary only |
| `mise run dev` | Start API + UI dev servers concurrently |
| `mise run dev:api` | Start Go API server only |
| `mise run dev:ui` | Start Vite dev server only |
| `mise run test` | Run all Go tests |
| `mise run install` | Install frontend npm dependencies |
| `mise run clean` | Remove build artifacts |
## Configuration (environment variables)
| Variable | Default | Description |

57
mise.toml Normal file
View File

@@ -0,0 +1,57 @@
[tools]
go = "1.26.2"
node = "24.14.0"
npm = "latest"
[env]
AUTH_TOKEN = "devtoken"
PORT = "8080"
DB_PATH = "wotra.db"
TZ = "UTC"
[tasks.build]
description = "Build production single binary (web + Go)"
depends = ["build:web", "build:go"]
[tasks."build:web"]
description = "Build Svelte frontend"
dir = "web"
run = "npm run build"
[tasks."build:go"]
description = "Build Go binary with embedded web assets"
run = "go build -tags production -o wotra ./cmd/wotra"
[tasks.dev]
description = "Start Go API and Vite dev server concurrently"
run = """
echo "Go API: http://localhost:${PORT}"
echo "Vite UI: http://localhost:5173"
mise run dev:api & mise run dev:ui
wait
"""
[tasks."dev:api"]
description = "Start Go API server"
run = "go run ./cmd/wotra"
[tasks."dev:ui"]
description = "Start Vite dev server"
dir = "web"
run = "npm run dev"
[tasks.test]
description = "Run all Go tests"
run = "go test ./..."
[tasks.install]
description = "Install frontend npm dependencies"
dir = "web"
run = "npm install"
[tasks.clean]
description = "Remove build artifacts"
run = """
rm -f wotra
rm -rf web/build web/.svelte-kit
"""