diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index fcce24d..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,81 +0,0 @@ -# Project Constraints - -## Delivery sequencing - -- Start with `apps/control-plane` first. -- Deliver the core backend in 2 steps, not 3: - 1. `control-server` plus `node-service` contract and runtime loop - 2. web control plane on top of that stable backend seam -- Do not start web UI work until the `control-server` and `node-service` contract is stable. - -## Architecture - -- `control-server` is the clean backend contract that other parts consume. -- `apps/node-agent` reports into `apps/control-plane`. -- `apps/web` reads from `apps/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-server` should 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-service` limited to the WebDAV mount surface. -- Route admin and control actions through `control-server`, not directly from browsers to `node-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-agent` authenticates 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 `betternas` node 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.md` extremely 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 `Docs` button to the left of the sign-in button on the main landing page. diff --git a/docs/repository-root/README.md b/README.md similarity index 100% rename from docs/repository-root/README.md rename to README.md diff --git a/.agents/skills/shadcn/SKILL.md b/docs/.agents/skills/shadcn/SKILL.md similarity index 100% rename from .agents/skills/shadcn/SKILL.md rename to docs/.agents/skills/shadcn/SKILL.md diff --git a/.agents/skills/shadcn/agents/openai.yml b/docs/.agents/skills/shadcn/agents/openai.yml similarity index 100% rename from .agents/skills/shadcn/agents/openai.yml rename to docs/.agents/skills/shadcn/agents/openai.yml diff --git a/.agents/skills/shadcn/assets/shadcn-small.png b/docs/.agents/skills/shadcn/assets/shadcn-small.png similarity index 100% rename from .agents/skills/shadcn/assets/shadcn-small.png rename to docs/.agents/skills/shadcn/assets/shadcn-small.png diff --git a/.agents/skills/shadcn/assets/shadcn.png b/docs/.agents/skills/shadcn/assets/shadcn.png similarity index 100% rename from .agents/skills/shadcn/assets/shadcn.png rename to docs/.agents/skills/shadcn/assets/shadcn.png diff --git a/.agents/skills/shadcn/cli.md b/docs/.agents/skills/shadcn/cli.md similarity index 100% rename from .agents/skills/shadcn/cli.md rename to docs/.agents/skills/shadcn/cli.md diff --git a/.agents/skills/shadcn/customization.md b/docs/.agents/skills/shadcn/customization.md similarity index 100% rename from .agents/skills/shadcn/customization.md rename to docs/.agents/skills/shadcn/customization.md diff --git a/.agents/skills/shadcn/evals/evals.json b/docs/.agents/skills/shadcn/evals/evals.json similarity index 100% rename from .agents/skills/shadcn/evals/evals.json rename to docs/.agents/skills/shadcn/evals/evals.json diff --git a/.agents/skills/shadcn/mcp.md b/docs/.agents/skills/shadcn/mcp.md similarity index 100% rename from .agents/skills/shadcn/mcp.md rename to docs/.agents/skills/shadcn/mcp.md diff --git a/.agents/skills/shadcn/rules/base-vs-radix.md b/docs/.agents/skills/shadcn/rules/base-vs-radix.md similarity index 100% rename from .agents/skills/shadcn/rules/base-vs-radix.md rename to docs/.agents/skills/shadcn/rules/base-vs-radix.md diff --git a/.agents/skills/shadcn/rules/composition.md b/docs/.agents/skills/shadcn/rules/composition.md similarity index 100% rename from .agents/skills/shadcn/rules/composition.md rename to docs/.agents/skills/shadcn/rules/composition.md diff --git a/.agents/skills/shadcn/rules/forms.md b/docs/.agents/skills/shadcn/rules/forms.md similarity index 100% rename from .agents/skills/shadcn/rules/forms.md rename to docs/.agents/skills/shadcn/rules/forms.md diff --git a/.agents/skills/shadcn/rules/icons.md b/docs/.agents/skills/shadcn/rules/icons.md similarity index 100% rename from .agents/skills/shadcn/rules/icons.md rename to docs/.agents/skills/shadcn/rules/icons.md diff --git a/.agents/skills/shadcn/rules/styling.md b/docs/.agents/skills/shadcn/rules/styling.md similarity index 100% rename from .agents/skills/shadcn/rules/styling.md rename to docs/.agents/skills/shadcn/rules/styling.md