Geen omschrijving
  • Python 65.7%
  • HTML 31.7%
  • Shell 1.9%
  • JavaScript 0.4%
  • Dockerfile 0.2%
  • Andere 0.1%
Zoek een bestand
Your Name dc84c2bd02 Release 1.0.0: versionering + CHANGELOG
- DMS_VERSION in settings (env-overridebaar), getoond in de sidebar-footer
  via een 'versie'-context processor.
- CHANGELOG.md met de volledige 1.0-inhoud (basis voor de acceptatie).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 14:10:17 +02:00
backend Release 1.0.0: versionering + CHANGELOG 2026-07-16 14:10:17 +02:00
caddy first commit with files 2026-06-20 16:18:19 +02:00
deploy HA-docs: node-toevoeg-draaiboek (3e + tijdelijke migratie-master) + architectuur-PDF 2026-07-13 15:38:02 +02:00
docs Docs: failover-proof SSL via DNS-01 wildcard (Coolify/Traefik, cPanel + ClouDNS) 2026-07-13 16:31:43 +02:00
.env.example DR: tweede onafhankelijke off-site S3-target (opt-in, bv. UpCloud) 2026-07-12 21:24:04 +02:00
.gitignore Haal docs/ uit git: klantspecifiek + niet-bedoeld 2026-07-01 01:05:25 +02:00
CHANGELOG.md Release 1.0.0: versionering + CHANGELOG 2026-07-16 14:10:17 +02:00
docker-compose.prod.yml DR: tweede onafhankelijke off-site S3-target (opt-in, bv. UpCloud) 2026-07-12 21:24:04 +02:00
docker-compose.yml Sprint 3b: echte WebDAV met MinIO + Postgres auth + per-user filtering 2026-06-20 18:03:53 +02:00
README.md Docs: consoliderend disaster-recovery-plan (scenario's, RPO/RTO, sleutel-escrow, restore-tests) 2026-07-12 15:26:19 +02:00

DMS — Document Management System

Klant-gebaseerd Document Management System voor een NL administratie-/belasting­advieskantoor: versleutelde opslag, OCR + full-text search, AI-classificatie en -chat, WebDAV/drive-mount, Office Online (Collabora), M365-SSO, en koppelingen met Nextens en Scaleway-backup. Active-passive HA over twee datacenters.

Documentatie

Stack

Laag Tech
Backend + admin Django 5 + Django REST Framework
End-user UI Django templates + HTMX + Alpine.js + Tailwind CSS
WebDAV wsgidav (eigen container)
Database PostgreSQL 16
Search Elasticsearch 8
File storage MinIO (S3-compatible)
Workers Celery + Redis
OCR Tesseract (NL + EN) + Poppler
AI Mistral AI (Frankrijk, GDPR) — classificatie, RAG-chat, anomalieën
Auth Microsoft 365 / Entra ID via OIDC + lokaal met TOTP-MFA
Office bewerken Collabora Online (WOPI)
Fiscale koppeling Nextens Synchronization API v2
Reverse proxy / deploy Traefik via Coolify (auto Let's Encrypt)
Off-site backup / HA Scaleway (EU) · Postgres+MinIO-replicatie, WireGuard

Local quickstart

# 1. Kopieer env template en pas aan
cp .env.example .env
#    → genereer een echte DJANGO_SECRET_KEY (50+ chars random)
#    → pas POSTGRES_PASSWORD en MINIO_ROOT_PASSWORD aan
#    → vul OVERHEID_IO_API_KEY in (overheid.io abonnement)

# 2. Build + start de hele stack
docker compose up -d --build

# 3. Run database-migraties en maak een superuser
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser

# 4. Optioneel: seed default folder template
docker compose exec backend python manage.py seed_default_template

Open:

In Windows Verkenner mappen als drive (na Sprint 3):

  • Map Network Drive → http://webdav.localhost:8001 (lokaal) of https://webdav.testdms.memoriaal.com (prod)

Project structuur

DMSApp/
├── docker-compose.yml      # alle services
├── .env.example            # config template
├── caddy/                  # reverse proxy
│   ├── Caddyfile.dev
│   └── Caddyfile.prod
├── backend/                # Django project
│   ├── Dockerfile
│   ├── requirements.txt
│   ├── manage.py
│   ├── dms/                # project settings + celery
│   ├── accounts/           # custom user + M365 OIDC
│   ├── klanten/            # klant + folder-template engine
│   ├── documenten/         # documenten + metadata + versies
│   ├── permissies/         # rol × groep × klant matrix
│   ├── audit/              # append-only audit log
│   └── core/               # gedeelde utils (overheid.io, MinIO helpers)
├── webdav/                 # wsgidav (Windows drive letter)
│   ├── Dockerfile
│   ├── requirements.txt
│   └── server.py
└── docs/                   # architectuur & beslis-documenten

Fasering

Fase Inhoud
Fase 1 (huidige) Klant CRUD met overheid.io, folder-template editor, M365 SSO + MFA, rol × groep permissies, WebDAV, web upload, Tesseract OCR, full-text search, audit log, versie-historie, off-site backup.
Fase 2 Email-to-inbox intake, Mistral AI classificatie/extractie, scanner drop folder, retentie-policies actief, legal hold UI.
Fase 3 Sync met boekhoudpakket, Outlook plugin, templates per klant-type, externe API.

Compliance basis (vanaf Fase 1)

  • Immutable audit log (append-only, alle acties)
  • Soft-delete model (geen hard delete)
  • MFA verplicht via M365
  • EU-only AI (Mistral cloud, geen US-providers voor document content)
  • Off-site EU backup (versleuteld nightly)

Productie deploy (preview)

Productie target: testdms.memoriaal.com + webdav.testdms.memoriaal.com op een EU VPS (Hetzner/Leaseweb). Caddy regelt auto-HTTPS via Let's Encrypt. Details in docs/deployment.md (volgt in Sprint 6).