Implement geo backend, TS client, frontend, and CI tests.
Add a Go HTTP API with Ed25519 auth and invitation onboarding, user-scoped GeoJSON Point management, a Bun-tested @noble/ed25519 TypeScript client, static Vue/Vuetify frontend integration, and a Gitea CI workflow running both Go and Bun test suites. Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# 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)
|
||||
|
||||
## 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`
|
||||
Reference in New Issue
Block a user