betterNAS/apps/control-plane
2026-04-01 20:26:44 -04:00
..
cmd/control-plane user-owned DAVs (#14) 2026-04-01 20:26:44 -04:00
Dockerfile init (#5) 2026-03-31 23:50:51 -04:00
go.mod Add SQLite store and user auth for production deployment 2026-04-01 18:47:59 -04:00
go.sum Add SQLite store and user auth for production deployment 2026-04-01 18:47:59 -04:00
package.json pnpm, verify, cleanup (#6) 2026-03-31 23:59:52 -04:00
README.md user-owned DAVs (#14) 2026-04-01 20:26:44 -04:00

betterNAS Control Plane

Go service that owns the product control plane.

It is intentionally small for now:

  • GET /health
  • GET /version
  • POST /api/v1/nodes/register
  • POST /api/v1/nodes/{nodeId}/heartbeat
  • PUT /api/v1/nodes/{nodeId}/exports
  • GET /api/v1/exports
  • POST /api/v1/mount-profiles/issue
  • POST /api/v1/cloud-profiles/issue

The request and response shapes must follow the contracts in packages/contracts.

/api/v1/* endpoints require bearer auth. New nodes register with the same username and password session that users use in the web app. BETTERNAS_USERNAME and BETTERNAS_PASSWORD may be provided to seed a default account for local or self-hosted setups. Nodes and exports are owned by users, and mount profiles return the account username plus the mount URL so Finder can authenticate with that same betterNAS password. Multi-export sync should send an explicit mountPath per export so mount profiles can stay stable across runtimes.