Files
hnh-map/docs/development.md
Nikolay Tatarinov 6a6977ddff Enhance user profile management and Gravatar integration
- Added email field to user profile API and frontend components for better user identification.
- Implemented PATCH /map/api/me endpoint to update user email, enhancing user experience.
- Introduced useGravatarUrl composable for generating Gravatar URLs based on user email.
- Updated profile and layout components to display user avatars using Gravatar, improving visual consistency.
- Enhanced development documentation to guide testing of navbar and profile features.
2026-03-01 16:48:56 +03:00

103 lines
2.8 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.
**Testing navbar and profile:** With no users in the database, log in as `admin` using the bootstrap password (e.g. `HNHMAP_BOOTSTRAP_PASSWORD=admin` in docker-compose.dev) to create the first admin user. You can then use that account to verify the navbar avatar and profile page. For Gravatar, use OAuth (e.g. Google) or set email later on the profile page once that feature is available.
**Gravatar (avatar by email):** Gravatar URLs are built on the frontend using the `md5` package (client-side MD5 of the user's email). No backend endpoint is used; the frontend composable `useGravatarUrl` (see Phase 5+ of the navbar/avatar plan) will use this dependency.
### 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.