MitID verificeretGDPR · Art. 9
Trial · alt inkluderet · by Pilar
Pilot-kunde · 0 kr/md · alle moduler aktive · ingen platform-fee
siden 2026-06-15
← Tenants

Database · Supabase EU

Postgres 15 · pgvector · Row-Level Security · region lokal

mock-mode
Tabeller
18
18 ialt · 15 RLS
Rækker
1.690
~1053 KB total
RLS-aktive
16 / 18
multi-tenant isolation
Migrations
2 / 4
ready/planned
!

Kører i mock-mode

Al UI-data kommer fra in-memory mock i lib/*.ts. Schema er klar. Skift til Supabase ved at sætte PRAXIS_DB=supabase-local efter du har kørt Supabase CLI.

1. Lokal Supabase
npx supabase init
npx supabase start          # docker-compose op
npx supabase db reset       # kører migrations
2. Skift mode
# .env.local
PRAXIS_DB=supabase-local
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=eyJ...

Migrations

supabase/migrations/*.sql
0001initial_schemaTabeller, RLS, hash-chain audit, pgvectorready
0002seed_demo_dataSeed bypilar + nordlys + 5 klienterready
0003agent_ledgerAgent-aktivitets-log + LLM-call-metricsplanned
0004scan_meshesObject storage refs for 3D-fod-meshesplanned

Tabeller

TabelRækkerStørrelseRLS
tenants24 KB● enabled · tenant_isolated
users65 KB○ shared
memberships72 KB○ shared
services98 KB● enabled · tenant_isolated
clients512 KB● enabled · tenant_isolated
bookings1424 KB● enabled · tenant_isolated
journals1218 KB● enabled · tenant_isolated
journal_entries47142 KB● enabled · tenant_isolated
scans31286 KB● enabled · tenant_isolated
payments1218 KB● enabled · tenant_isolated
vouchers46 KB● enabled · tenant_isolated
subsidy_schemes114 KB● enabled · tenant_isolated
reports712 KB● enabled · tenant_isolated
events24789 KB● enabled · tenant_isolated
audit_log1.247412 KB● enabled · tenant_isolated
module_activations226 KB● enabled · tenant_isolated
api_keys53 KB● enabled · tenant_isolated
webhook_subscriptions22 KB● enabled · tenant_isolated

Row-Level Security · multi-tenant garanti

Hver tabel har en policy der binder rækker til den session-satte tenant. Cross-tenant leak er strukturelt umuligt.

Session-context (sat før hver query)
SET LOCAL app.tenant_id = 'a3f7-...-91c';
SET LOCAL app.role      = 'practitioner';

-- Alle queries herefter ser KUN denne tenants data
RLS-policy (samme på alle tabeller)
CREATE POLICY bookings_tenant_isolated
  ON bookings FOR ALL
  USING (tenant_id =
    current_setting('app.tenant_id')::uuid
  );

3 connection-modes

mock
● aktiv
in-memory · lib/*.ts
Regionlokal
RLS
Pool0-0
pgvector
supabase-local
http://127.0.0.1:54321
Regionlokal (docker)
RLS
Pool2-10
pgvector
supabase-eu
https://jajdtvduzkitjzcazcng.supabase.co
Regioneu-west-1 · Ireland
RLS
Pool5-50
pgvector
Hvad sker der nu

Schema-filen supabase/migrations/0001_initial_schema.sql indeholder hele datamodellen. For at gå live: (1) supabase init + supabase start i projektet for at få lokal stack, (2) supabase db reset kører migrations, (3) sæt PRAXIS_DB=supabase-local i .env.local, (4) restart dev-serveren. Når det virker lokalt, supabase link + supabase db push → produktion i Frankfurt.