feat: add dashboard persistence store

This commit is contained in:
vince 2026-06-18 18:09:17 +02:00
parent 5eeec0dcb5
commit 5e42ee8869
18 changed files with 1181 additions and 19 deletions

View file

@ -9,27 +9,46 @@ in validated dashboard model state.
## Development
```sh
npm install
npm run dev
```
The current workspace has Bun available, so local verification can also use:
```sh
bun install
bun run dev
```
This MVP uses Drizzle with Bun SQLite for local file-backed persistence.
## Scripts
- `npm run dev`: start the local development server.
- `npm run check`: run Svelte and TypeScript checks.
- `npm run build`: build the production app.
- `npm run preview`: preview the production build.
- `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 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 first deployment target is a Node/container-friendly SvelteKit build. Later
issues add the versioned dashboard model, SQLite persistence, component system,
Storybook, seed data, and rendering pipeline.
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
component system, Storybook, seed data expansion, and rendering pipeline.