Andriy Oblivantsev ba7cd51a84
CI / test (push) Failing after 35s
Upgrade runtime to Go 1.25 and add container orchestration.
Add a cache-optimized multi-stage Dockerfile with non-root runtime, compose service definitions for local/dev execution, CI Go version alignment, and docs/path cleanup updates.

Made-with: Cursor
2026-03-01 11:44:07 +00:00

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

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:

docker compose up --build -d

Stop the service:

docker compose down

For local development with auto-rebuild on file changes:

docker compose up --watch

Frontend

Open web/index.html through a static server (recommended) or browser file URL.

Example:

python -m http.server 4173

Then visit http://localhost:4173/web/.

API client library

Path: libs/geo-api-client

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
Description
No description provided
Readme 17 MiB
Languages
HTML 37.2%
CSS 35.2%
SCSS 17.8%
Go 4.7%
JavaScript 2.8%
Other 2.2%