# AstralView — Runnable BI Dashboard Editor (goView-like) This repo contains a runnable **BI dashboard screen editor** (AstralView) built as a simple product you can run locally and build as static assets. ## A) Runnable dev demo (local editor) ### Prerequisites - Node.js (recommended: the version used in this workspace) - pnpm (repo pins `pnpm@9.15.4` via `packageManager`) ### Install ```bash pnpm install ``` ### Run the editor (dev) ```bash pnpm --filter @astralview/editor dev ``` Then open the URL printed by Vite (typically `http://localhost:5173`). ### What you should see - A **default demo BI screen**. - Default screen size: **1920×1080**. - You can select widgets, multi-select, move/resize, reorder layers, and edit properties in the inspector. ## B) Publishable build artifact (build output + how to preview/serve) ### Build ```bash pnpm --filter @astralview/editor build ``` Build output: - `packages/editor/dist/` (static assets) ### Preview the production build locally ```bash pnpm --filter @astralview/editor preview ``` ### Serve in production Serve the `packages/editor/dist/` folder with any static file server (Nginx, Caddy, Vercel static, etc.). Example: ```bash pnpm --filter @astralview/editor build npx serve packages/editor/dist ``` ## Data format (import/export) - Export: editor exports the **AstralView Screen JSON** (includes `width`/`height`, nodes, etc.). - Import: - AstralView Screen JSON is validated/sanitized via schema migration. - goView-like exports are also supported via conversion. - Default canvas size is **1920×1080**, and import/export preserves screen `width`/`height`. ## C) Acceptance checklist (goView-like UX) — status ### Canvas defaults - [x] Default screen/canvas size is **1920×1080**. - [x] Import/export preserves `width`/`height` (AstralView Screen JSON). - [x] goView conversion uses 1920×1080 fallbacks when width/height are missing. ### Core editor workflows - [x] Selection - [x] Right-click selects item (goView-ish) - [x] Right-click on empty space does **not** clear selection - [x] Multi-select transform - [x] Move - [x] Group bounding-box resize - [x] Layers panel - [x] Reorder (drag) - [x] Lock / hide - [x] Context menu - [x] Copy / paste - [x] Z-index actions - [x] Align / distribute - [x] Hotkeys parity (baseline) - [x] Inspector - [x] X / Y / W / H - [x] Media `src` live update (image/iframe/video) ### Polish & stability - [x] Bounds clamp (keep widgets within the screen bounds) - [x] Min sizes (rect min=1; resize logic enforces sane bounds) - [x] Avoid stuck context menus (close on normal interactions) - [ ] Audit for no-op clickable actions (continue tightening UX) ### “Feels usable” - [x] Minimal sample BI screen is included by default (demo widgets preloaded). ## Repo quality gates Before pushing changes, keep these green: ```bash pnpm -r lint && pnpm -r typecheck && pnpm -r build ```