Gå til innholdet
Digilist Dokumentasjon
Book demo

ARKITEKTUR · KOMPONENTER

Komponent-katalog

27 isolerte Convex-komponenter — plattform (10), forretning (12), tjeneste (5). Per-komponent tabeller, fasader, hendelse-topics og avhengigheter.

Hver komponent eier sine tabeller, fasader, schema og kontrakt. Komponenter spørrer aldri hverandres tabeller direkte — all kryss-komponent-tilgang går via fasader eller hendelse-bussen.

Plattform-lag (10 komponenter)

identity

Brukere, sesjoner, MFA, step-up auth, OAuth (ID-porten · BankID · Feide).

Tabellerusers, sessions, mfaCredentials, oauthAccounts, passwordResets
Fasader (utdrag)users.create, users.signInWithIdPorten, users.requireMfa, users.linkBankID
Hendelser emituser.signed_up, user.signed_in, mfa.required, password.reset_requested
Avhengigheteraudit, notifications, secrets

rbac

Roller, tillatelser, kapabilitet-resolver (3-lag: plattform → plan → tenant override).

Tabellerroles, userRoles, capabilities, capabilityOverrides
Fasaderrbac.createRole, rbac.assignRole, rbac.checkPermission, rbac.getUserPermissions
Hendelser emitrole.created, role.assigned, role.revoked
Avhengigheteraudit

tenants

Tenant-livssyklus, billing-binding, team-medlemskap, kundeforhold.

Tabellertenants, tenantUsers, tenantInvites, tenantCustomers
Fasadertenants.create, tenants.invite, tenants.addCustomer, tenants.changePlan
Hendelser emittenant.created, subscription.upgraded, tenant.member_added
Avhengigheteridentity, subscriptions, audit

audit

Hendelse-loggføring, retention, DSAR-eksport, GDPR-sletting.

TabellerauditEvents, dataExports, dataDeletions, consents
Fasaderaudit.log, audit.export, audit.scheduleDeletion, audit.consents.record
Hendelser emitaudit.gdpr.export_requested, audit.gdpr.deletion_scheduled
Avhengigheter(root)

feature-flags · notifications · secrets · geo · media · i18n

KomponentHovedansvar
feature-flagsPlattform kill-switches, A/B-eksperimenter, tenant overrides
notificationsE-post (Resend), SMS (Twilio), push (Expo), in-app, brukerprefs
secretsKryptert nøkkel-lager med step-up auth-krav
geoBrreg-oppslag, adresse-normalisering, geocoding
mediaCDN-opplastinger (Cloudflare R2), bilde-transformasjoner
i18nOversettelser, lokaliteter, RTL-håndtering

Forretnings-lag (12 komponenter)

resources

Lokaler, utleieobjekter, tjenester, events. State-maskin: draft → scheduled → published → archived.

Tabellerresources, resourceMedia, resourceCategories, resourceCustomFields
Fasaderresources.create, resources.publish, resources.archive, resources.search
Hendelser emitresource.created, resource.published, resource.unpublished, resource.archived
Avhengighetermedia, geo, audit

bookings

Slot-allokering, godkjenningsflyt (innbygger → saksbehandler → driftsleder), konflikt-deteksjon.

Tabellerbookings, bookingApprovals, bookingChanges, bookingAttendees
Fasaderbookings.create, bookings.approve, bookings.reject, bookings.cancel, bookings.reschedule
Hendelser emitbooking.created, booking.approved, booking.rejected, booking.cancelled
Avhengigheterresources, calendar, payments, notifications, audit

calendar

Åpningstider, blokker, sesonger, rekurrens. Beregner tilgjengelige slots i sanntid.

TabelleravailabilityBlocks, openingHours, seasons, recurringRules
Fasadercalendar.availability, calendar.block, calendar.unblock, calendar.computeSlots
Hendelser emitavailability.blocked, season.started, season.ended
Avhengigheterresources

payments

Checkout, Stripe Connect + Vipps + Nets routing, refusjon, dispute-håndtering.

Tabellerpayments, refunds, disputes, paymentMethods
Fasaderpayments.createIntent, payments.confirm, payments.refund, payments.handleWebhook
Hendelser emitpayment.intent.created, payment.captured, payment.failed, payment.refunded
Avhengigheterbookings, ledger, notifications, accounting

ledger · subscriptions · tickets · memberships · messaging · reviews · seasons · accounting

KomponentHovedansvar
ledgerProvisjon-snapshot, payouts, escrow, double-entry bookkeeping
subscriptionsBasis / Pluss / Premium-nivåer, plan-grinder, billing
ticketsEvent-billett-typer, kjøp, innsjekk, salg igjen, kiosk
membershipsMedlemskap, kontingent, fornyelse, A-krav-medlems-styring
messagingTrådet kommunikasjon innbygger ↔ saksbehandler, vedlegg
reviewsVurderinger, moderasjon, eksterne kilder, A-krav
seasonsSesongleie-fordeling for lag/foreninger, prioritets-regler
accountingEHF, Fiken / Tripletex / Visma / PowerOffice / DNB-adaptere

Tjeneste-lag (5 komponenter)

KomponentHovedansvar
intelligenceSite-audits, Vekst-harness (keywords → drafts → publish), content-pipeline
supportSak-håndtering, escalation, runbook-binding, on-call
adminPlattform-drift, tenant-tilsyn, kill-switches, support-impersonering
migrationsConvex-skjema-migrering, datatransport, blue/green-bytter
reportingAggregert tenant + plattform-rapportering, eksport

Avhengighet-graf (forenklet)

┌───────────────────────────────┐
│ audit │
└──────────────▲────────────────┘
│ (alle komponenter logger)
┌──────────┬───────────┬────────┴────────┬───────────┬──────────┐
│ identity │ rbac │ tenants │ payments │ bookings │
└────▲─────┴────▲──────┴────▲────────────┴────▲──────┴────▲─────┘
│ │ │ │ │
│ ┌───────┴───────────┴────┐ ┌───────┴───────────┴─┐
└──┤ notifications │ │ ledger │
└───────▲────────────────┘ └─────────────────────┘
┌──────────┴──────────────┐
│ messaging │
└─────────────────────────┘

Beslektet