diff --git a/Dockerfile.dev b/Dockerfile.dev
new file mode 100644
index 0000000..eb241e2
--- /dev/null
+++ b/Dockerfile.dev
@@ -0,0 +1,13 @@
+FROM golang:1.21-alpine
+
+WORKDIR /hnh-map
+
+COPY go.mod go.sum ./
+RUN go mod download
+
+COPY . .
+RUN go build -o hnh-map ./cmd/hnh-map
+
+EXPOSE 3080
+
+CMD ["/hnh-map/hnh-map", "-grids=/map"]
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
index f3da6f1..545e184 100644
--- a/docker-compose.dev.yml
+++ b/docker-compose.dev.yml
@@ -1,30 +1,31 @@
-# Development: backend (Go) on 8080, frontend (Nuxt dev) on 3000 with proxy to backend.
-# Open http://localhost:3000/map/ — /map/api, /map/updates, /map/grids are proxied to backend.
-
-services:
- backend:
- build:
- context: .
- dockerfile: Dockerfile
- ports:
- - "3080:3080"
- volumes:
- - ./grids:/map
- environment:
- - HNHMAP_PORT=3080
- - HNHMAP_BOOTSTRAP_PASSWORD=admin
-
- frontend:
- image: node:20-alpine
- working_dir: /app
- command: sh -c "npm ci && npm run dev"
- ports:
- - "3000:3000"
- volumes:
- - ./frontend-nuxt:/app
- # Prevent overwriting node_modules from host
- - /app/node_modules
- environment:
- - NUXT_PUBLIC_API_BASE=/map/api
- depends_on:
- - backend
+# Development: backend API on 3080 + frontend Nuxt dev server on 3000.
+# Open http://localhost:3000/ for app development with live-reload.
+
+services:
+ backend:
+ build:
+ context: .
+ dockerfile: Dockerfile.dev
+ ports:
+ - "3080:3080"
+ volumes:
+ - ./grids:/map
+ environment:
+ - HNHMAP_PORT=3080
+ - HNHMAP_BOOTSTRAP_PASSWORD=admin
+
+ frontend:
+ image: node:20-alpine
+ working_dir: /app
+ command: sh -c "npm ci && npm run dev"
+ ports:
+ - "3000:3000"
+ volumes:
+ - ./frontend-nuxt:/app
+ # Prevent overwriting node_modules from host
+ - /app/node_modules
+ environment:
+ - NUXT_PUBLIC_API_BASE=/map/api
+ - HOST=0.0.0.0
+ depends_on:
+ - backend
diff --git a/docs/development.md b/docs/development.md
index 97e3b57..2e02fca 100644
--- a/docs/development.md
+++ b/docs/development.md
@@ -1,50 +1,53 @@
-# Разработка
-
-## Локальный запуск
-
-### Бэкенд (Go)
-
-Из корня репозитория:
-
-```bash
-go build -o hnh-map ./cmd/hnh-map
-./hnh-map -grids=./grids -port=8080
-```
-
-Или без сборки:
-
-```bash
-go run ./cmd/hnh-map -grids=./grids -port=8080
-```
-
-Сервер будет отдавать статику из каталога `frontend/` (нужно предварительно собрать фронт, см. ниже).
-
-### Фронтенд (Nuxt)
-
-```bash
-cd frontend-nuxt
-npm install
-npm run dev
-```
-
-В dev-режиме приложение доступно по корню (например `http://localhost:3000/`). Бэкенд должен быть доступен; при необходимости настройте прокси в `nuxt.config.ts` (например на `http://localhost:8080`).
-
-### Docker Compose (разработка)
-
-```bash
-docker compose -f docker-compose.dev.yml up
-```
-
-- Фронт: порт **3000** (Nuxt dev-сервер).
-- Бэкенд: порт **3080** (чтобы не конфликтовать с другими сервисами на 8080).
-
-Откройте http://localhost:3000/. Запросы к `/map/api`, `/map/updates`, `/map/grids` проксируются на бэкенд (host `backend`, порт 3080).
-
-### Сборка образа и prod-композ
-
-```bash
-docker build -t hnh-map .
-docker compose -f docker-compose.prod.yml up -d
-```
-
-В prod фронт собран в образ и отдаётся бэкендом из каталога `frontend/`; порт 8080.
+# Разработка
+
+## Локальный запуск
+
+### Бэкенд (Go)
+
+Из корня репозитория:
+
+```bash
+go build -o hnh-map ./cmd/hnh-map
+./hnh-map -grids=./grids -port=8080
+```
+
+Или без сборки:
+
+```bash
+go run ./cmd/hnh-map -grids=./grids -port=8080
+```
+
+Сервер будет отдавать статику из каталога `frontend/` (нужно предварительно собрать фронт, см. ниже).
+
+### Фронтенд (Nuxt)
+
+```bash
+cd frontend-nuxt
+npm install
+npm run dev
+```
+
+В dev-режиме приложение доступно по корню (например `http://localhost:3000/`). Бэкенд должен быть доступен; при необходимости настройте прокси в `nuxt.config.ts` (например на `http://localhost:8080`).
+
+### Docker Compose (разработка)
+
+```bash
+docker compose -f docker-compose.dev.yml up
+```
+
+Dev-композ поднимает два сервиса:
+
+- `backend` — Go API на порту `3080` (без сборки/раздачи фронтенд-статики в dev-режиме).
+- `frontend` — Nuxt dev-сервер на порту `3000` с live-reload; запросы к `/map/api`, `/map/updates`, `/map/grids` проксируются на бэкенд.
+
+Используйте [http://localhost:3000/](http://localhost:3000/) как основной URL для разработки интерфейса.
+Порт `3080` предназначен для API и backend-эндпоинтов; корень `/` может возвращать `404` в dev-режиме — это ожидаемо.
+
+### Сборка образа и prod-композ
+
+```bash
+docker build -t hnh-map .
+docker compose -f docker-compose.prod.yml up -d
+```
+
+В prod фронт собран в образ и отдаётся бэкендом из каталога `frontend/`; порт 8080.
diff --git a/frontend-nuxt/Dockerfile b/frontend-nuxt/Dockerfile
deleted file mode 100644
index ea04678..0000000
--- a/frontend-nuxt/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-# Use Node 20+ for build (required by Tailwind/PostCSS toolchain)
-FROM node:20-alpine AS builder
-
-WORKDIR /app
-
-COPY package.json package-lock.json* ./
-RUN npm ci
-
-COPY . .
-RUN npm run generate
-
-# Output: .output/public is the static site root (for Go http.Dir("frontend"))
-FROM alpine:3.19
-RUN apk add --no-cache bash
-COPY --from=builder /app/.output/public /frontend
-# Optional: when integrating with main Dockerfile, copy /frontend into the image
diff --git a/frontend-nuxt/README.md b/frontend-nuxt/README.md
index 65f8b31..3e0f4d7 100644
--- a/frontend-nuxt/README.md
+++ b/frontend-nuxt/README.md
@@ -1,66 +1,66 @@
-# HnH Map – Nuxt 3 frontend
-
-Nuxt 3 + Tailwind + DaisyUI frontend for the HnH map. Served by the Go backend under `/map/`.
-
-In dev mode the app is available at the path with baseURL **`/map/`** (e.g. `http://localhost:3000/map/`). The Go backend must be reachable (directly or via the dev proxy in `nuxt.config.ts`).
-
-## Project structure
-
-- **pages/** — route pages (e.g. map view, profile, login)
-- **components/** — Vue components
-- **composables/** — shared composition functions
-- **layouts/** — layout components
-- **server/** — Nitro server (if used)
-- **plugins/** — Nuxt plugins
-- **public/gfx/** — static assets (sprites, terrain, etc.)
-
-## Requirements
-
-- **Node.js 20+** (required for build; `engines` in package.json). Use `nvm use` if you have `.nvmrc`, or build via Docker (see below).
-- npm
-
-## Setup
-
-```bash
-npm install
-```
-
-## Development
-
-```bash
-npm run dev
-```
-
-Then open the app at the path shown (e.g. `http://localhost:3000/map/`). Ensure the Go backend is running and proxying or serving this app if needed.
-
-## Build
-
-```bash
-npm run build
-```
-
-Static export (for Go `http.Dir`):
-
-```bash
-npm run generate
-```
-
-Output is in `.output/public`. To serve from the existing `frontend` directory, copy contents to `../frontend` after generate, or set `nitro.output.dir` in `nuxt.config.ts` and build from the repo root.
-
-## Build with Docker (Node 20)
-
-Build requires Node 20+. If your host has an older version (e.g. Node 18), build the frontend in Docker:
-
-```bash
-docker build -t frontend-nuxt .
-docker create --name fn frontend-nuxt
-docker cp fn:/frontend ./output-public
-docker rm fn
-# Copy output-public/* into repo frontend/ and run Go server
-```
-
-## Cutover from Vue 2 frontend
-
-1. Build this app (`npm run generate`).
-2. Copy `.output/public/*` into the repo’s `frontend` directory (or point Go at the Nuxt output directory).
-3. Restart the Go server. The same `/map/` routes and API remain.
+# HnH Map – Nuxt 3 frontend
+
+Nuxt 3 + Tailwind + DaisyUI frontend for the HnH map. Served by the Go backend under `/map/`.
+
+In dev mode the app is available at the path with baseURL **`/map/`** (e.g. `http://localhost:3000/map/`). The Go backend must be reachable (directly or via the dev proxy in `nuxt.config.ts`).
+
+## Project structure
+
+- **pages/** — route pages (e.g. map view, profile, login)
+- **components/** — Vue components
+- **composables/** — shared composition functions
+- **layouts/** — layout components
+- **server/** — Nitro server (if used)
+- **plugins/** — Nuxt plugins
+- **public/gfx/** — static assets (sprites, terrain, etc.)
+
+## Requirements
+
+- **Node.js 20+** (required for build; `engines` in package.json). Use `nvm use` if you have `.nvmrc`, or build via Docker (see below).
+- npm
+
+## Setup
+
+```bash
+npm install
+```
+
+## Development
+
+```bash
+npm run dev
+```
+
+Then open the app at the path shown (e.g. `http://localhost:3000/map/`). Ensure the Go backend is running and proxying or serving this app if needed.
+
+## Build
+
+```bash
+npm run build
+```
+
+Static export (for Go `http.Dir`):
+
+```bash
+npm run generate
+```
+
+Output is in `.output/public`. To serve from the existing `frontend` directory, copy contents to `../frontend` after generate, or set `nitro.output.dir` in `nuxt.config.ts` and build from the repo root.
+
+## Build with Docker (Node 20)
+
+Build requires Node 20+. If your host has an older version (e.g. Node 18), build the frontend in Docker:
+
+```bash
+docker build -t frontend-nuxt .
+docker create --name fn frontend-nuxt
+docker cp fn:/frontend ./output-public
+docker rm fn
+# Copy output-public/* into repo frontend/ and run Go server
+```
+
+## Cutover from Vue 2 frontend
+
+1. Build this app (`npm run generate`).
+2. Copy `.output/public/*` into the repo’s `frontend` directory (or point Go at the Nuxt output directory).
+3. Restart the Go server. The same `/map/` routes and API remain.
diff --git a/frontend-nuxt/components/MapView.vue b/frontend-nuxt/components/MapView.vue
index c614a88..321e83f 100644
--- a/frontend-nuxt/components/MapView.vue
+++ b/frontend-nuxt/components/MapView.vue
@@ -1,510 +1,530 @@
-
-
-
-
Map list is empty.
-
- Make sure you are logged in and at least one map exists in Admin (uncheck «Hidden» if needed).
-