Files
familienarchiv/docs/architecture/c4/l2-containers.puml

2.2 KiB

Container Diagram: FamilienarchivContainer Diagram: FamilienarchivFamilienarchiv (Docker Compose)[system]«container»Web Frontend[SvelteKit / Node.js] Server-side rendered UI.Handles auth sessioncookies, document searchand viewer, transcriptioneditor, annotation layer,family tree (Stammbaum),stories (Geschichten),activity feed (Chronik),enrichment workflow, andadmin panel.«container»API Backend[Spring Boot 4 / Java 21 / Jetty] REST API. Implementsdocument management,search, user auth, fileupload/download,transcription, OCRorchestration, and SSEnotifications.«container»OCR Service[Python FastAPI / port 8000] Handwritten textrecognition (HTR) and OCRmicroservice. Single-nodeby design â€” see ADR-001.Reachable only on theinternal Docker network; noexternal port exposed.«container»Relational Database[PostgreSQL 16] Stores document metadata,persons, users, permissiongroups, tags, transcriptionblocks, audit log, and SpringSession data.«container»Object Storage[MinIO (S3-compatible)] Stores the actual documentfiles (PDFs, scans). Objectskeyed asdocuments/{UUID}_{filename}.«container»Bucket Init Helper[MinIO Client (mc)] One-shot container onstartup. Creates the archivebucket with private accesspolicy.«person»User Admin or family member«external_system»Email Service SMTP server. Deliversnotification andpassword-reset emails.Uses[HTTPS / Browser]API requests withBasic Auth token[HTTP / REST / JSON]SSE notifications(server-sent events)[HTTP / SSE â€” directbackend-to-browser]Reads and writesmetadata andsessions[JDBC / SQL]Uploads and streamsdocument files[HTTP / S3 API (AWSSDK v2)]OCR job requestswith presigned MinIOURL[HTTP / REST / JSON]Sends notificationand password-resetemails (optional)[SMTP]Fetches PDF viapresigned URL[HTTP / S3 presigned]Creates bucket onstartup[MinIO Client CLI]