Demo app, collections/features CRUD, QR codes, docs
CI / test (push) Successful in 4s

Demo app (web/):
- Collections: select, rename, remove (x button per row), delete
- Features: add point (lon/lat validation), remove, list in selected collection
- QR codes for pk (private) and pb (public) keys
- Restore public key from private key
- 409 Conflict handled for already-registered login
- Title: Momswap Geo Backend Use-Cases Test

Backend:
- PATCH /v1/collections/{id} for rename
- DELETE /v1/collections/{id}
- Clearer lon/lat validation errors (-180..180, -90..90)

Client:
- updateCollection, deleteCollection, derivePublicKey

Docs:
- docs/frontend-development.md (demo app, local dev)
- README links to all docs

Made-with: Cursor
This commit is contained in:
2026-03-01 13:41:54 +00:00
parent ceeac1a1ee
commit ef3957b618
15 changed files with 512 additions and 26 deletions
+6
View File
@@ -2,6 +2,8 @@
This document explains how frontend developers should integrate with the backend through the reusable TypeScript client at `libs/geo-api-client`.
> **See also:** [Frontend Development](frontend-development.md) — demo app (`web/`), local dev, build steps.
Primary backend URL for integration:
- `https://momswap.produktor.duckdns.org/`
@@ -43,6 +45,7 @@ Key methods:
- `ensureKeysInStorage()`
- `getStoredKeys()`
- `derivePublicKey(privateKey)` — restore public key from private key (Ed25519)
- `importKeys(keys)`
- `exportKeys()`
- `setAccessToken(token)`
@@ -54,8 +57,11 @@ Key methods:
- `registerWithInvitation(...)`
- `listCollections()`
- `createCollection(name)`
- `updateCollection(collectionId, name)`
- `deleteCollection(collectionId)`
- `listFeatures(collectionId)`
- `createPointFeature(collectionId, lon, lat, properties)`
- `deleteFeature(featureId)`
## Recommended integration flow