This website requires JavaScript.
Component Diagram: Web Frontend â Document Workflows Component Diagram: Web Frontend â Document Workflows Web Frontend (SvelteKit / SSR) [system] «component» / (Home / Search) [SvelteKit Route] Loader: parses URL params (q, from, to, senderId, receiverId, tags), fetches /api/documents/search and /api/persons. Renders search form with full-text, date range, sender/receiver typeahead, and tag filters. «component» /documents/+page.ts [SvelteKit Client Loader] Client-side load gated by matchMedia('(min-width: 1024px)') and ?view query. Fetches /api/documents/density only on desktop (Tailwind lg breakpoint) and outside calendar view; degrades to empty buckets on network failure. «component» TimelineDensityFilter.svelte [Svelte Component] Per-month density bars above the document list. Click selects a single month, emits onchange({from, to}) using YYYY-MM-DD boundaries. Hidden on mobile and tablet (below lg, 1024px) and in calendar view. «component» /documents/[id] [SvelteKit Route] Loader: GET /api/documents/{id}. Page: metadata panel, inline file viewer, transcription editor, annotation layer, and comment thread. «component» /documents/[id]/edit [SvelteKit Route] Edit form with PersonTypeahead, TagInput, date/location fields. Form action: PUT /api/documents/{id}. «component» /documents/new [SvelteKit Route] Upload form for a new document. Loader: GET /api/persons. Form action: POST /api/documents with multipart file. «component» /documents/bulk-edit [SvelteKit Route] Multi-document metadata editor. Loader: GET /api/documents/incomplete. Requires WRITE_ALL (redirects otherwise). Action: PATCH /api/documents/bulk. «component» /enrich/[id] [SvelteKit Route] Guided enrichment workflow. Loader: GET /api/documents/{id}. Progressively saves annotations and transcription blocks. «component» /api/persons (SvelteKit API) [SvelteKit Server Route] Proxies GET /api/persons?q=... to backend for PersonTypeahead suggestions. «component» /api/tags (SvelteKit API) [SvelteKit Server Route] Proxies GET /api/tags to backend for TagInput autocomplete. «component» PersonTypeahead.svelte [Svelte Component] Async autocomplete for selecting a person. Debounces input, calls /api/persons?q=. «component» TagInput.svelte [Svelte Component] Multi-tag input. Supports free-text entry and selecting existing tags from /api/tags. «person» User «container» API Backend [Spring Boot] Searches and browses [HTTPS / Browser] GET /api/documents/search, GET /api/persons [HTTP / JSON] GET /api/documents/density (desktop only, â¥1024px) [HTTP / JSON] Mounts above the result list Provides density / minDate / maxDate props GET /api/documents/{id}, GET /api/documents/{id}/file [HTTP / JSON + Binary] PUT /api/documents/{id} [HTTP / Multipart] GET /api/persons, POST /api/documents [HTTP / JSON + Multipart] GET /api/documents/incomplete, PATCH /api/documents/bulk [HTTP / JSON] GET/POST /api/transcription, POST /api/documents/{id}/annotations [HTTP / JSON] Uses for sender/receiver filter Uses for sender/receiver selection Uses for sender selection Uses for tag management Fetches suggestions [HTTP] Fetches existing tags [HTTP] GET /api/persons [HTTP / JSON] GET /api/tags [HTTP / JSON]