Post

MomSwap — GeoJSON Collections with Ed25519 Auth

User-owned GeoJSON feature collections — Ed25519 challenge-response auth, invitation onboarding, MinIO assets, static Vue frontend.

MomSwap — GeoJSON Collections with Ed25519 Auth

Product · ProProdukt SL / produktor.io · 2024–present
Repo: momswap/backend on git.produktor.io
Live: tenerife.baby

MomSwap is a small geospatial SaaS: each user owns GeoJSON feature collections (points and related assets), authenticated with Ed25519 instead of passwords.

What ships

AreaDetail
AuthChallenge → login (/v1/auth/challenge, /v1/auth/login); register with ownership proof
OnboardingHybrid invitations — signed invite payload + inviter lineage
DataPer-user collections and Point feature CRUD
AssetsObject storage on MinIO
FrontendStatic no-build Vue + Vuetify (web/) from CDN
Client libTypeScript @noble/ed25519 API client (libs/geo-api-client)
CIGitea Actions — Go tests + Bun client tests

Why Ed25519

Password resets and shared secrets do not fit a invite-first geo product. Keys prove control of the identity; the service verifies signatures. Bootstrap uses an admin/service public key for register-by-signature.

Stack

Go API · PostgreSQL · MinIO · Vue / Vuetify · Bun tests · Docker Compose (including a test profile so var/ stays runtime-only).

This post is licensed under CC BY 4.0 by the author.