Skip to content

Quick Start

Quick Start

Build a minimal tenant workspace with one collection, one relationship role, and one app. The same source builds locally and in Workspace Studio.

1. Configure Vite and TypeScript

// vite.config.ts
import { pod } from '@norbital-ai/pod/vite';
import { defineConfig } from 'vite';

export default defineConfig({ plugins: [pod()] });
// tsconfig.json
{ "extends": "./.norbital/tsconfig.json" }

2. Add a collection

Create src/collections/tasks/+model.ts with a default-exported defineModel() declaration. The directory name supplies the collection ID.

3. Add relationships

Create src/collections/+relationship.ts. Default-export the relationship builder and type it with the adjacent generated Relationships type.

4. Add an app

Create src/apps/+tasks.svelte. Add literal title, description, and pod:icon metadata in <svelte:head>; import typed client access from $pod/client.

5. Sync and build

pod sync
pnpm build

Sync generates .norbital/tsconfig.json, registry modules, and local role types. Build runs synchronization and a full Svelte check before emitting .norbital/dist/.

Next

  • Add +hooks.ts, +pipelines.ts, or +integrations.ts beside a model.
  • Add a remote at src/remotes/+<lower_snake_case>.ts.
  • Add an automation at src/automation/+<lower_snake_case>.ts.
  • Add optional tenant seed behavior at src/+seed.ts.