mirror of
https://github.com/harivansh-afk/betterNAS.git
synced 2026-04-15 13:03:43 +00:00
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# `@betternas/contracts`
|
|
|
|
This package is the machine-readable source of truth for shared interfaces in
|
|
betterNAS.
|
|
|
|
Use it to keep the four product parts aligned:
|
|
|
|
- NAS node
|
|
- control plane
|
|
- local device
|
|
- cloud/web layer
|
|
|
|
## What belongs here
|
|
|
|
- OpenAPI source documents
|
|
- shared TypeScript types
|
|
- route constants
|
|
- JSON schemas for payloads we want to validate outside TypeScript
|
|
|
|
## What does not belong here
|
|
|
|
- business logic
|
|
- per-service config
|
|
- implementation-specific helpers
|
|
|
|
## Current contract layers
|
|
|
|
- [`src/control-plane.ts`](./src/control-plane.ts)
|
|
- current runtime scaffold for health and version
|
|
- [`src/foundation.ts`](./src/foundation.ts)
|
|
- first product-level entities and route constants for node, mount, and cloud flows
|
|
- [`openapi/`](./openapi)
|
|
- language-neutral source documents for future SDK generation
|
|
- [`schemas/`](./schemas)
|
|
- JSON schema mirrors for the first shared entities
|
|
|
|
## Change rules
|
|
|
|
1. Shared API shape changes happen here first.
|
|
2. If the boundary changes, also update
|
|
[`docs/architecture.md`](../../docs/architecture.md).
|
|
3. Prefer additive changes until all four parts are live.
|
|
4. Do not put Nextcloud-only assumptions into the core contracts unless the
|
|
field is explicitly part of the cloud adapter.
|
|
5. Keep the first version narrow. Over-modeling early is another form of drift.
|