Files
hnh-map/docs/development.md
Nikolay Tatarinov 6529d7370e Add configuration files and update project documentation
- Introduced .editorconfig for consistent coding styles across the project.
- Added .golangci.yml for Go linting configuration.
- Updated AGENTS.md to clarify project structure and components.
- Enhanced CONTRIBUTING.md with Makefile usage for common tasks.
- Updated Dockerfiles to use Go 1.24 and improved build instructions.
- Refined README.md and deployment documentation for clarity.
- Added testing documentation in testing.md for backend and frontend tests.
- Introduced Makefile for streamlined development commands and tasks.
2026-03-01 01:51:47 +03:00

99 lines
2.2 KiB
Markdown

# 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.