This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
panel-ui is the admin/management dashboard for the Pano platform — the web UI a site owner
uses to manage news, users, plugins, themes, and settings (~56 routes). It is a SvelteKit 2 +
Svelte 5 app built with Vite and shipped via @sveltejs/adapter-node, and is not served
on its own in production: the pano-web-platform backend launches it as a Node/Bun upstream and
reverse-proxies to it (see the ecosystem overview in ../CLAUDE.md and the backend's
UIManager in ../pano-web-platform/CLAUDE.md).
Code is JavaScript with JSDoc (no .ts), styling is SCSS compiled separately from Vite, and
the package manager is Bun.
bun install # also runs postinstall → bundles the local @panomc/sdk (src/pano-sdk)
bun run dev # Vite dev on 0.0.0.0:3001 (DEV=true)
bun run dev:ui # dev + a concurrent `sass --watch` (use this when touching SCSS)
bun run build # production SSR build (DEV=false)
bun run build:ui # one-shot SCSS → static/style.css
bun run lint # prettier -c
bun run format # prettier --write- API base is
/panel/api, proxied in dev to the backend viaVITE_API_URLin.env. The app is mounted under the/panelbase path (seesvelte.config.js). To run it against a local backend, setinit-ui = truein the platform'sconfig.confand start both. - The HTTP/data layer comes from a vendored
@panomc/sdkatsrc/pano-sdk, bundled intonode_modulesbyscripts/bundle-internal-libs.json postinstall — edit the SDK there, then re-runbun run bundle:libs. - SCSS lives in
src/styles/; Vite does not compile it —watch:ui/build:uido. Rundev:ui(not plaindev) when editing styles. - Routes are grouped as
(panel)(the dashboard) and(plugin-ui)(slots where installed plugins mount panel UI). Components insrc/lib/components/, pages insrc/lib/pages/. - Releases are automated by semantic-release on
alpha/beta/main; use conventional commit messages. Production bundles are pinned by the backend in itsui-releases.yml.
Use Svelte 5 runes for new code; i18n via svelte-i18n's _ store.