# Dimension Lab Website Standalone SvelteKit runtime for the Dimension Lab system overview dashboard. This project is not a Homepage customization and does not depend on Homepage runtime, frontend code, or configuration. The dashboard will be model-driven: the reusable renderer stays content-free, while environment-specific data lives in validated dashboard model state. ## Development ```sh bun install bun run dev ``` This MVP uses Drizzle with Bun SQLite for local file-backed persistence. ## Scripts - `bun run dev`: start the local development server. - `bun run check`: run Svelte and TypeScript checks. - `bun run test`: run Vitest. - `bun run build`: build the production app. - `bun run preview`: preview the production build. - `bun run storybook`: start the component explorer on port 6006. - `bun run build-storybook`: build the static Storybook review artifact. - `bun run db:generate`: generate Drizzle migrations from the server schema. - `bun run db:check`: validate migration consistency. ## Persistence Dashboard documents are stored in SQLite through Drizzle. The default database URL is: ```sh DATABASE_URL=file:./data/dimensionlab.sqlite ``` SQLite files under `data/` are ignored. Drizzle schema lives in `src/lib/server/db/schema.ts`; tracked migrations live in `drizzle/`. Runtime startup applies the checked-in dashboard migrations before reads or writes. If the app is launched from outside the repo tree, set `DASHBOARD_MIGRATIONS_DIR` to the tracked migrations directory. The current driver is `bun:sqlite`, which keeps this repo installable in the Bun workflow. The store boundary is isolated so a later Postgres driver can replace the SQLite connection without changing the dashboard model or renderer. Stored dashboard documents pass through a version migration boundary before reads or writes; the MVP supports `dashboard.v1` and fails unsupported versions with an explicit migration error. ## Runtime Shape The SvelteKit build uses the Node adapter, and the current persistence runtime is Bun because the MVP SQLite driver is `bun:sqlite`. Later issues add the seed data expansion and rendering pipeline. ## Storybook Storybook covers the reusable UI components with generic fixtures only. Stories must not import environment-specific dashboard content; the presentation layer accepts labels, values, icons, status, and links through typed props.