Invulhulp voor pre-scan, DPIA en IAMA. Samen online of volledig lokaal in je browser, zonder account. https://invulhulpen.rijksapp.nl/
  • TypeScript 81.1%
  • Vue 12.5%
  • Python 3.2%
  • CSS 2.2%
  • JavaScript 0.7%
  • Other 0.3%
Find a file
Robbert Bos d8d690989d fix(assessments): close unbounded empty-version bypass via changeDescription
A save with a non-empty changeDescription but no content changes and no
forceNewVersion previously skipped the cheap cachedState-only path and minted
a permanent, empty assessment_versions row. An editor could script this to
grow the shared table without bound.

Gate the cheap path on !forceNewVersion instead of !changeDescription: a
changeDescription alone no longer creates a version; an explicit empty
checkpoint must go through forceNewVersion, which is owner-gated (isRestore).
A labeled save with real edits still creates a distinct (non-consolidated)
version.
2026-07-23 13:00:04 +02:00
.claude feat(rvo): upgrade @nl-rvo component-library-css 4.20.2 + design-tokens 2.4.1 (button-migratie) (#382) 2026-06-20 12:25:04 +02:00
.claude-plugin feat: IAMA-invulhulp + assessment-brede afronding 2026-06-07 12:58:37 +02:00
.github ci(deps): bump pnpm 10.32.1 -> 11.13.0 to fix retired npm audit endpoint 2026-07-23 11:51:56 +02:00
apps fix(assessments): close unbounded empty-version bypass via changeDescription 2026-07-23 13:00:04 +02:00
containers build(deps): bump keycloak/keycloak 2026-07-23 12:56:28 +02:00
docs fix: correct Dutch DPIA field label typo 2026-07-23 10:17:25 +02:00
packages/assessment-core fix: update iama text to address collaboration more prominently 2026-07-23 11:50:37 +02:00
schemas Merge main in samenwerken: verzoen 11 main-commits met de monorepo 2026-06-13 00:00:54 +02:00
script fix(security): escape begrippenkader-content in definitie-tooltips 2026-06-13 13:48:07 +02:00
scripts test(security): regressie-guard tegen CSP-onveilige inline styles (#326) 2026-06-21 07:37:08 +02:00
sources fix: correct Dutch DPIA field label typo 2026-07-23 10:17:25 +02:00
tests/e2e Hernoem Assessment Boekhouding naar Invulhulpen + RVO logo-tagline 2026-06-07 23:29:13 +02:00
.containerignore fix: verwijder script/ uit .containerignore zodat dev-Containerfile kan builden 2026-06-06 12:45:35 +02:00
.editorconfig Slimme sync bij samenwerken: geen onnodige meldingen (#1) 2026-04-12 19:35:52 +02:00
.gitattributes Restructure into pnpm monorepo with multi-user assessment platform 2026-03-15 16:56:19 +01:00
.gitignore feat(mobile-ux): mobiele CSS voor de boekhouding-frontend 2026-06-20 12:28:09 +02:00
.pre-commit-config.yaml chore: pre-commit autoupdate 2026-07-23 12:57:10 +02:00
.prettierrc.json Slimme sync bij samenwerken: geen onnodige meldingen (#1) 2026-04-12 19:35:52 +02:00
CHANGELOG.md fix(versie): toon CalVer-tag op standalone /zonder-account/ 2026-06-21 07:39:18 +02:00
CODE_OF_CONDUCT.md project-setup 2025-03-06 09:57:49 +01:00
CONTRIBUTING.md CHANGELOG + automatische releases op basis van de changelog (CalVer) (#298) 2026-06-11 22:45:50 +02:00
DCO.md project-setup 2025-03-06 09:57:49 +01:00
eslint.config.ts Restructure into pnpm monorepo with multi-user assessment platform 2026-03-15 16:56:19 +01:00
LICENSE project-setup 2025-03-06 09:57:49 +01:00
LICENSES.txt Add license generation script and update LICENSES.txt for monorepo 2026-03-15 16:58:21 +01:00
package.json ci(deps): bump pnpm 10.32.1 -> 11.13.0 to fix retired npm audit endpoint 2026-07-23 11:51:56 +02:00
pnpm-lock.yaml fix(deps): update shell-quote to clear DoS advisory 2026-07-23 11:51:56 +02:00
pnpm-workspace.yaml fix(deps): bump dev-only undici and esbuild to clear Dependabot advisories 2026-07-23 11:51:56 +02:00
publiccode.yaml chore: publiccode.yaml opfrissen naar v0.5 (#368, vervolg #379) 2026-06-14 00:50:01 +02:00
pyproject.toml build(deps-dev): bump pytest in the uv-dependencies group 2026-07-23 12:57:31 +02:00
README.md Hernoem Assessment Boekhouding naar Invulhulpen + RVO logo-tagline 2026-06-07 23:29:13 +02:00
SECURITY.md Add contributing files 2025-05-08 13:27:29 +02:00
uv.lock build(deps-dev): bump pytest in the uv-dependencies group 2026-07-23 12:57:31 +02:00

PAR Assessments

Status: Beta License: EUPL v1.2

Webapplicatie voor het uitvoeren van Pre-scan-, DPIA- en IAMA-assessments, volgens het Rijksmodel DPIA en het IAMA (Impact Assessment Mensenrechten en Algoritmes) van de Nederlandse overheid. Gebouwd met het RVO component library.

Kenmerken

  • Pre-scan, DPIA en IAMA invullen in de browser als losstaande applicatie
  • Samenwerken aan Pre-scans, DPIA's en IAMA's via Invulhulpen:
    • Samenwerken aan assessments met meerdere gebruikers
    • Projectbeheer met rollen (eigenaar, bewerker, kijker)
    • Voortgang opslaan en later hervatten
    • PDF-export van ingevulde assessments

Architectuur

pnpm monorepo:

Package Omschrijving
packages/assessment-core Gedeelde assessment-engine: formulierweergave, navigatie, validatie, PDF-export
apps/boekhouding-frontend Vue 3 SPA — projectbeheer, samenwerken, Keycloak-login
apps/boekhouding-backend Fastify REST API — PostgreSQL, JWT-authenticatie
apps/standalone-form Standalone formulier — draait zonder backend, exporteert als single HTML
sources/ YAML-bronbestanden voor Pre-scan-, DPIA- en IAMA-assessments

Technologie

  • Frontend: Vue 3 (Composition API), TypeScript, Vite, Pinia
  • Backend: Fastify 5, Drizzle ORM, PostgreSQL 17
  • Auth: Keycloak (OIDC), JWT-verificatie via jose
  • Styling: RVO Design System
  • Standalone: Vite single-file build — alles (HTML, CSS, JS) in één bestand
  • PDF: pdfmake

Aan de slag

Vereisten

  • Volledige stack: Podman of Docker
  • Standalone formulier: Node.js 22+ en pnpm (via corepack enable)

Volledige stack

Start PostgreSQL, Keycloak en de applicatie met één commando. Wil je alleen een formulier invullen zonder backend? Zie Standalone formulier.

podman compose -f containers/compose.dev.yaml up -d
pnpm db:seed  # testdata laden (idempotent)
Service URL
Frontend http://localhost:5174
Backend API http://localhost:3000
Standalone formulier http://localhost:5175
Keycloak admin http://localhost:8080 (admin / admin)

Testgebruikers: sam@example.com / welkom123, noor@example.com / welkom123

De seed maakt drie projecten aan (een pre-scan met antwoorden, een DPIA met versiegeschiedenis, en een leeg project) gekoppeld aan de testgebruikers. Database-migraties draaien automatisch bij het starten van de backend container.

Standalone formulier

Voor ontwikkeling zonder backend (vereist Node.js 22+ en pnpm):

corepack enable
pnpm install
pnpm dev

Bouwen

pnpm build:standalone   # Standalone HTML-bestand
pnpm build:backend      # Backend
pnpm build:frontend     # Frontend

Commando's

Commando Omschrijving
pnpm dev Start standalone formulier
pnpm dev:backend Start backend (vereist PostgreSQL)
pnpm dev:frontend Start frontend
pnpm db:generate Genereer database-migraties
pnpm db:migrate Voer migraties uit
pnpm db:seed Vul database met testdata (idempotent)
pnpm lint Lint de code

Assessment-bronbestanden

De sources/ directory bevat de assessment-definities in YAML:

Bestand Omschrijving
prescan.yaml Pre-scan DPIA-definitie
dpia.yaml Volledige DPIA-definitie
iama.yaml IAMA-definitie
begrippenkader_dpia.yaml Begrippenlijst met tooltips
begrippenkader_iama.yaml Begrippenlijst IAMA / Algoritmekader

YAML verwerken

Vereist uv (Python package manager).

# Valideer en genereer JSON voor standalone formulier
uv run script/run_all.py \
  --schema schemas/assessment-definition.v1.schema.json \
  --source sources/dpia.yaml \
  --begrippen-yaml sources/begrippenkader_dpia.yaml \
  --output-json form-app/src/assets/DPIA.json \
  --output-md docs/questions/questions_DPIA.md

Domeinkennis-plugin (AI-assistent)

Voor ontwikkelaars en redacteuren die in de editor (Claude Code / Cursor) aan déze repo werken is er een Claude-plugin met domeinkennis over de assessment-definities: schema's, begrippenkaders, RVO-styling en een validatie-agent. Het is een hulpmiddel bij het bouwen en onderhouden van de definities en applicatie — niet een invul-assistent voor eindgebruikers die een pre-scan, DPIA of IAMA uitvoeren.

Installeren:

/plugin marketplace add MinBZK/par-dpia-form
/plugin install assessments@assessment-tools

Zie het ontwerp en de verantwoording van de marketplace en plugin.

Standaarden en compliance

Invulhulpen conformeert aan de volgende overheidsstandaarden:

Standaard Status
NL GOV API Design Rules URI-versioning (/api/v1/), application/problem+json, security headers, API-Version header
WCAG 2.2 AA Gedeeltelijk — actieve verbetering, zie toegankelijkheidsverklaring
BIO2 JWT audience-validatie, rate limiting, input-validatie, security headers
AVG / GDPR Dataminimalisatie, RBAC, auditlog, privacyverklaring
EUPL-1.2 Open source licentie conform open-tenzij beleid

Privacy en gegevensverwerking

Zie docs/gegevensverwerking.md voor een overzicht van verwerkte persoonsgegevens, rechtsgrond en bewaartermijnen.

Documentatie