SealFlow

Documentatie

Aan de slag met SealFlow

Een beknopt overzicht: zelf hosten, de ondertekenflow, de publieke API en verificatie. Uitgebreidere handleidingen volgen.

Zelf hosten

SealFlow draait als een set Docker-containers achter een reverse proxy (Caddy) met automatische HTTPS. De volledige stack — API (NestJS), web (Next.js), PostgreSQL en de virusscanner — start met één opdracht.

git clone <jouw-repo>/SealFlow.git
cd SealFlow
cp .env.production.example .env.production   # secrets invullen
bash scripts/deploy.sh                        # build + start + migraties

Alleen de reverse proxy staat naar buiten; database en services praten uitsluitend over het interne netwerk. Encryptie at rest is verplicht, en webapp-securityheaders (CSP, HSTS, anti-clickjacking) zitten er standaard in — een verse installatie scoort direct een A op securityheaders.com.

Ondertekenen

  • Upload een PDF en plaats handtekening-, datum- en tekstvelden.
  • Voeg ondertekenaars toe en verstuur beveiligde eenmalige links (optioneel met e-mailcode-verificatie).
  • Na ondertekening wordt automatisch een definitieve PDF + bewijscertificaat gegenereerd, met een volledig auditspoor.

Publieke API v1

Server-to-server integratie met een werkruimte-gebonden API-key (Bearer of X-API-Key):

Authorization: Bearer sk_live_xxxxxxxxxxxx

GET  /api/v1/documents            # documenten lezen
GET  /api/v1/documents/:id
POST /api/v1/templates/:id/send   # versturen vanuit een sjabloon

Webhooks: registreer endpoints die de gebeurtenis document.completed ontvangen. Elke aflevering is HMAC-SHA256-ondertekend via de header X-SealFlow-Signature, zodat je de echtheid kunt verifiëren.

Verstuur vanuit je eigen domein

Elke werkruimte kan een eigen SMTP-afzender configureren via /admin/settings. Uitnodigingen, herinneringen en notificaties gaan dan uit vanaf Praktijk X <notificaties@voorbeeld.nl>via jouw eigen mailprovider (Fastmail, Google Workspace, Microsoft 365, Postmark of een eigen server). Zonder eigen configuratie wordt de standaard SealFlow-afzender gebruikt.

  • SMTP-wachtwoord versleuteld at rest (AES-256-GCM); nooit teruggegeven via de API of geloggd.
  • Alleen poort 465 (SSL/TLS) en 587 (STARTTLS) — geen plaintext-SMTP.
  • SSRF-bescherming: interne/loopback/private IP-targets worden geweigerd (dubbelcheck vóór elke verzending).
  • DNS-status voor SPF en DMARC wordt getoond; DKIM wordt automatisch gecontroleerd wanneer de selector bekend is uit de gekozen provider-preset.
  • Test-mail-knop met max 5 pogingen per uur; SMTP-fouten worden gesaniteerd getoond (geen credentials of stacktraces).
  • Bij een kapotte eigen SMTP-configuratie faalt de mail hard — geen stille terugval op de standaard SealFlow-afzender.
  • Systeem-mails (registratie-verificatie, wachtwoord-reset) blijven altijd via de globale SealFlow-mail; die zijn niet aan een werkruimte gebonden.
  • Alleen de eigenaar (OWNER) van de werkruimte mag de configuratie bekijken of wijzigen.

Publieke verificatie

Elk voltooid document krijgt een verificatie-ID (SF-JAAR-XXXX-XXXX) met QR-code op de PDF en het certificaat. Iedereen kan de echtheid controleren op /verify/<id> — die pagina toont uitsluitend dataminimale gegevens (status, datum, aantal ondertekenaars, hash, organisatie) en nooit de inhoud of persoonsgegevens.

Meer

Broncode en uitgebreidere technische documentatie vind je op GitHub. Beveiligingsvragen? Zie Beveiliging en security.txt.