71 lines
2.8 KiB
Markdown
71 lines
2.8 KiB
Markdown
# 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.
|
|
|
|
## Seed Data
|
|
|
|
The initial Dimension Lab dashboard lives in
|
|
`src/lib/model/fixtures/dimensionlab.ts` as validated model data. It includes
|
|
the first-screen telemetry, service groups, status strip, weather module,
|
|
Iconify icon identifiers, links, and datasource references. Values that are not
|
|
live yet are labeled as fallback values in the data so later datasource adapters
|
|
can replace them without changing presentation components.
|
|
|
|
## 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.
|