# PiCloud Dashboard

SvelteKit SPA for the PiCloud control plane.

## Stack

- SvelteKit 2 with `adapter-static` (SPA fallback)
- Svelte 5 (runes)
- TypeScript
- Vite

## Scripts

```sh
npm install
npm run dev      # vite dev server on :5173, proxies /api → PICLOUD_API
npm run build    # static SPA bundle into ./build/
npm run check    # svelte-check
npm run lint
npm run format
```

By default `npm run dev` proxies `/api/*` and `/healthz` to
`http://127.0.0.1:18080`. Override with `PICLOUD_API=http://host:port npm run dev`.

## How it fits in

In production Caddy serves the contents of `./build/` as static files and
falls back to `index.html` for client-side routing. The dashboard only
talks to the **control plane** (`/api/admin/*` on the manager); data-plane
invocations go through `/api/execute/*` on the orchestrator and are not
issued from the dashboard directly during MVP.
