Cross-platform database solution for SvelteKit.
pnpm i -D sveltekit-db
sveltekit-db
uses kysely
under the hood.
You can define your database schema like:
// src/lib/db/schema.ts
export interface User {
id: number;
name: string;
email: string;
}
export interface Document {
id: number;
owner: number;
title: string;
content: string;
}
export interface Database {
User: User;
Document: Document;
}
// src/lib/db/index.ts
import { DB } from "sveltekit-db";
import type { Database } from "./schema";
export const db = DB<Database>();
Then you can use it like:
import { db } from "$lib/db";
import type { PageServerLoad } from "./$types";
export const load: PageServerLoad = async () => {
const documents = await db
.selectFrom("Document")
.where("Document.owner", "=", 1)
.select(["Document.id", "Document.title", "Document.content"])
.limit(10)
.execute();
return { documents };
};
D1
, DB
, or DATABASE
environment variable)SQLITE_FILE
environment variable, defaults to db.sqlite
)See src/lib/env.ts for all available environment variable options.
Once you've installed dependencies with pnpm install
, start a development server:
pnpm dev
Everything inside src/lib
is part of the library, everything inside src/routes
is used as a showcase or preview app.
To build the library:
pnpm package
To create a production version of the showcase app:
pnpm build
You can preview the production build with pnpm preview
.
To deploy the app, you may need to install an adapter for the target environment.
To publish the library to npm:
pnpm publish