mirror of
https://github.com/harivansh-afk/betterNAS.git
synced 2026-04-15 03:00:44 +00:00
3.2 KiB
3.2 KiB
Project Constraints
Delivery sequencing
- Start with
apps/control-planefirst. - Deliver the core backend in 2 steps, not 3:
control-serverplusnode-servicecontract and runtime loop- web control plane on top of that stable backend seam
- Do not start web UI work until the
control-serverandnode-servicecontract is stable.
Architecture
control-serveris the clean backend contract that other parts consume.apps/node-agentreports intoapps/control-plane.apps/webreads fromapps/control-plane.- Local mount UX is issued by
apps/control-plane.
Backend contract priorities
- The first backend seam must cover:
- node enrollment
- node heartbeats
- node export reporting
- control-server persistence of nodes and exports
- mount profile issuance for one export
control-servershould own:- node auth
- user auth
- mount issuance
Mount profile shape
- Prefer standard WebDAV username and password semantics for Finder compatibility.
- The consumer-facing mount profile should behave like:
- export id
- display name
- mount URL
- username
- password
- readonly
- expires at
Service boundary
- Keep
node-servicelimited to the WebDAV mount surface. - Route admin and control actions through
control-server, not directly from browsers tonode-service.
User-scoped auth requirements
- Remove the bootstrap token flow for v1.
- Use a single user-provided username and password across the entire stack:
apps/node-agentauthenticates with the user's username and password from environment variables- web app sessions authenticate with the same username and password
- WebDAV and Finder authentication use the same username and password
- Do not generate separate WebDAV credentials for users.
- Nodes and exports must be owned by users and scoped so authenticated users can only view and mount their own resources.
- Package the node binary for user download and distribution.
V1 simplicity
- Keep the implementation as simple as possible.
- Do not over-engineer the auth or distribution model for v1.
- Prefer the smallest change set that makes the product usable and distributable.
Live operations
- If modifying the live Netcup deployment, only stop the
betternasnode process unless the user explicitly asks to modify the deployed backend service. - When setting up a separate machine as a node in this session, access it through
computer ssh hiromi.
Node availability UX
- Prefer default UI behavior that does not present disconnected nodes as mountable.
- Surface connected and disconnected node state in the product when node availability is exposed.
Product docs UX
- Remove operational setup instructions from the main control-plane page when they are better represented as dedicated end-to-end product docs.
- Prefer a separate clean docs page for simple end-to-end usage instructions.
- Keep the root
README.mdextremely minimal: no headings, just 5-6 plain lines that explain the architecture simply and cleanly. - Make the default root route land on the main landing page instead of the auth-gated app.
- Add a plain
Docsbutton to the left of the sign-in button on the main landing page.