# Momswap Geo Backend Go backend service for user-owned GeoJSON feature collections with Ed25519 authentication and invitation-based onboarding. ## What is implemented - Ed25519 challenge-response auth (`/v1/auth/challenge`, `/v1/auth/login`) - Hybrid invitation onboarding (signed invite payload + inviter lineage) - User registration with ownership proof (`/v1/auth/register`) - Per-user collections and Point feature CRUD endpoints - Static no-build frontend (`web/`) using Vue + Vuetify from CDN - Reusable TypeScript API client (`libs/geo-api-client`) using `@noble/ed25519` - Bun tests for the TS client and Go tests for API flows - Gitea CI workflow running Go and Bun test suites ## Quick start ```bash go test ./... go run ./cmd/api ``` Server default: `http://localhost:8080`. Optional environment variables: - `ADDR` (default `:8080`) - `ADMIN_PUBLIC_KEY` (bootstrap initial inviter/admin user) ## Docker Compose Build and run the backend service: ```bash docker compose up --build -d ``` Stop the service: ```bash docker compose down ``` For local development with auto-rebuild on file changes: ```bash docker compose up --watch ``` ## Frontend Open `web/index.html` through a static server (recommended) or browser file URL. Example: ```bash python -m http.server 4173 ``` Then visit `http://localhost:4173/web/`. ## API client library Path: `libs/geo-api-client` ```bash cd libs/geo-api-client bun install bun test bun run build ``` ## CI Workflow: `.gitea/workflows/ci.yml` - `go test ./...` - `bun test` in `libs/geo-api-client`