# Development ## Local setup ### Backend (Go) From the repository root: ```bash go build -o hnh-map ./cmd/hnh-map ./hnh-map -grids=./grids -port=8080 ``` Or without building: ```bash go run ./cmd/hnh-map -grids=./grids -port=8080 ``` The server serves static files from the `frontend/` directory (you need to build the frontend first, see below). ### Frontend (Nuxt) ```bash cd frontend-nuxt npm install npm run dev ``` In dev mode the app is available at root (e.g. `http://localhost:3000/`). The backend must be reachable; configure the proxy in `nuxt.config.ts` if needed (e.g. to `http://localhost:8080`). ### Docker Compose (development) ```bash docker compose -f docker-compose.dev.yml up ``` Or using the Makefile: ```bash make dev ``` The dev Compose setup starts two services: - `backend` — Go API on port `3080` (no frontend static serving in dev mode). - `frontend` — Nuxt dev server on port `3000` with live-reload; requests to `/map/api`, `/map/updates`, `/map/grids` are proxied to the backend. Use [http://localhost:3000/](http://localhost:3000/) as the primary URL for UI development. Port `3080` is for API and backend endpoints; the root `/` may return `404` in dev mode — this is expected. ### Building the image and production Compose ```bash docker build -t hnh-map . docker compose -f docker-compose.prod.yml up -d ``` Or using the Makefile: ```bash make build ``` In production the frontend is built into the image and served by the backend from the `frontend/` directory; port 8080. ## Makefile targets | Target | Description | |--------|-------------| | `make dev` | Start Docker Compose development environment | | `make build` | Build production Docker image | | `make test` | Run Go tests (`go test ./...`) | | `make lint` | Run Go and frontend linters | | `make fmt` | Format all code (Go + frontend) | | `make generate-frontend` | Build frontend static output into `frontend/` | | `make clean` | Remove build artifacts | ## Running tests ```bash make test ``` Or directly: ```bash go test ./... ``` For frontend tests (if configured): ```bash cd frontend-nuxt npm test ``` See [docs/testing.md](testing.md) for details on the test suite.