Gå til innholdet
Digilist Dokumentasjon
Book demo

UTVIKLING · KOM-I-GANG

Kom i gang som utvikler

Forutsetninger, install, første lokale kjøring, seeding av databasen, dev-kommandoer, og monorepo-struktur.

Forutsetninger

  • Node.js 20+
  • pnpm 9+ (corepack enable && corepack prepare pnpm@latest --activate)
  • Convex konto og CLI (npm i -g convex)

Oppsett

Terminal window
# Klon
git clone git@github.com:xalatechnologies/booking-brilliance.git
cd booking-brilliance
# Installer
pnpm install
# Start Convex dev server (watcher schema + funksjoner + komponenter)
pnpm dev:convex
# Seed databasen (kun første gang)
npx convex run seeds:seedAll
npx convex run seedComponents:seedAll
# Start web-appen (i et annet terminal-vindu)
pnpm dev:web

Dev-kommandoer

KommandoBeskrivelse
pnpm devAlle tjenester (Convex + web + docs + monitoring + dashboard)
pnpm dev:convexConvex dev server alene
pnpm dev:webWeb-appen (port 5190)
pnpm dev:dashboardDashboard-appen (port 5191)
pnpm dev:docsAstro Starlight docs (port 4321)

Test-kommandoer

KommandoBeskrivelseAntall tester
pnpm sdk:testSDK hook unit-tester (Vitest, jsdom)~281
pnpm test:convexConvex-funksjon-tester (Vitest, edge-runtime)~1 470
pnpm test:convex:watchConvex-tester i watch-modus
pnpm test:convex:e2eBackend E2E-tester~71
pnpm test:e2ePlaywright browser E2E~135
pnpm test:e2e:a-kravCompliance E2E-suiter (A–K)~87
pnpm test:allHele suiten~2 044

Kjøre én test-fil:

Terminal window
pnpm sdk:test packages/sdk/src/hooks/use-bookings.test.ts
pnpm test:convex convex/components/bookings/__tests__/bookings.test.ts

Monorepo-struktur

booking-brilliance/
├── apps/
│ ├── web/ Markedsplassen (Astro + React)
│ ├── dashboard/ Forent dashboard (/admin + /platform)
│ └── docs/ Disse docs (Astro Starlight)
├── packages/
│ ├── sdk/ Source-only Convex SDK
│ ├── app-shell/ Provider-komposisjon, rutevakter
│ ├── digilist/ Domene-UI-komponenter
│ ├── shared/ Plattform-typer + konstanter
│ ├── ds/ Designsystem (Digdir-base + Digilist-tema)
│ ├── ds-themes/ Tema-tokens
│ ├── i18n/ i18next-wrapper
│ └── eslint-config/ Delt ESLint-config
├── convex/
│ ├── schema.ts ~80 kjernetabeller
│ ├── domain/ 103 fasade-filer, ~960 fasade-funksjoner
│ ├── components/ 27 isolerte komponenter
│ ├── lib/ Hendelse-buss, audit, middleware, rate-limits
│ ├── crons.ts 50 planlagte jobber
│ └── http.ts Webhook-endepunkter
└── tools/
├── content-agent/ Vekst-harness multi-agent system
└── docs-rag/ RAG-indeks-builder for docs.digilist.no

Konvensjoner — kort versjon

  1. Auth fra @digilist/app-shell — aldri lokalt. useAuth, RequireAuth, RoleProvider kommer derfra. Hindrer drift mellom apper.
  2. Skriv-fasader scopes alltid til session.tenantId. Lese-fasader på markedsplassen kan være un-scoped.
  3. Hendelser emit’es i samme transaksjon som forretningsskriven (emit(ctx, "topic", payload)). Aldri etterpå.
  4. Abonnenter MÅ være idempotente. Hendelser kan leveres mer enn én gang.
  5. Komponenter krysser ikke tabeller direkte. Bruk fasader eller hendelse-bussen.
  6. i18n via @digilist/i18n — aldri hardkodet streng-litteral. Default-lokalitet er nb.

Vanlige feil

SymptomSannsynlig årsak
Cannot read property 'tenantId' of undefinedGlemt requireSession(ctx) før skriv
Hot-reload hopper ikkeConvex dev server stoppet — start pnpm dev:convex på nytt
pnpm install feilerSlett node_modules + pnpm-lock.yaml, kjør pnpm install --force
Tester hengerConvex test-runtime trenger setupConvexTest() i beforeAll

Beslektet