diff --git a/README.md b/README.md index 5774223..0661357 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,13 @@ Status: milestone 2, thin API + parity page done. ## Development -Two terminals: +One command (installs frontend deps on first run, Ctrl-C stops everything): + +```sh +./dev.sh +``` + +Or manually, in two terminals: ```sh go run ./cmd/spreadlab # API on localhost:8080 diff --git a/dev.sh b/dev.sh new file mode 100755 index 0000000..131c26f --- /dev/null +++ b/dev.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Local dev stack in one command: +# - Go API on localhost:8080 +# - Vite dev server on localhost:5173 (proxies /api to the Go server) +# One Ctrl-C stops everything; if either server dies, the other is stopped. +set -euo pipefail + +cd "$(dirname "$0")" + +if [ ! -d web/node_modules ]; then + echo "dev.sh: first run, installing frontend dependencies..." + (cd web && npm install) +fi + +# On exit (Ctrl-C included), stop whichever background job is still running. +trap 'kill $(jobs -p) 2>/dev/null' EXIT + +go run ./cmd/spreadlab & +(cd web && npm run dev) & + +# wait -n returns when the FIRST job exits; the trap then cleans up the rest. +wait -n