This website requires JavaScript.
Explore
Help
Register
Sign In
marcel
/
familienarchiv
Watch
1
Star
0
Fork
0
You've already forked familienarchiv
Code
Issues
115
Pull Requests
Actions
Packages
Projects
Releases
Wiki
Activity
Files
f96a7fdb72cd02f2a0362c99b63e578ddfd89310
familienarchiv
/
docs
/
architecture
/
c4
/
l3-backend-3g-supporting.puml
Marcel
421d7ffd37
docs(c4): add L3 backend 3e persons, 3f OCR, 3g supporting domains
2026-05-06 22:52:21 +02:00
4.0 KiB
Raw
Blame
History
Component Diagram: API Backend â Supporting Domains
Component Diagram: API Backend â Supporting Domains
API Backend (Spring Boot)
[system]
«component»
AuditService
[Spring
Service
â
@Async]
Writes
audit
log
entries
asynchronously
via
a
dedicated
TaskExecutor,
with
transaction-aware
logging
to
prevent
deadlocks
on
concurrent
saves.
«component»
AuditLogQueryService
[Spring
Service]
Queries
audit
logs
for
activity
feeds,
pulse
stats,
recent
contributors,
and
per-document
history.
Facade
over
AuditLogRepository.
«component»
DashboardController
[Spring
MVC
â
/api/dashboard]
REST
endpoints
for
the
user
dashboard:
recent
document
resume
(/resume),
weekly
transcription
pulse
stats
(/pulse),
and
activity
feed
(/activity)
with
kind
filtering
and
pagination.
«component»
StatsController
[Spring
MVC
â
/api/stats]
Returns
aggregate
counts
(total
persons,
total
documents)
for
the
UI
stats
bar.
«component»
StatsService
[Spring
Service]
Queries
aggregate
counts:
total
persons
and
total
documents.
«component»
DashboardService
[Spring
Service]
Assembles
the
user
dashboard:
recent
document
resume
(calls
DocumentService
+
TranscriptionService),
weekly
transcription
pulse
stats,
and
activity
feed
with
contributor
avatars.
«component»
NotificationController
[Spring
MVC
â
/api/notifications]
REST
and
SSE
endpoints
for
notification
stream,
history
with
filtering,
read/unread
state,
and
per-user
preference
management.
«component»
NotificationService
[Spring
Service]
Creates
REPLY
and
MENTION
notifications,
optionally
sends
email,
marks
as
read,
and
pushes
events
to
connected
clients
via
SseEmitterRegistry.
«component»
SseEmitterRegistry
[Spring
Component]
In-memory
ConcurrentHashMap
of
Spring
SseEmitter
instances
per
user.
Handles
registration,
deregistration,
and
JSON
event
broadcasts.
«component»
GeschichteController
[Spring
MVC
â
/api/geschichten]
CRUD
for
publishable
stories
that
link
persons
and
documents.
Requires
BLOG_WRITE
permission
for
write
operations.
«component»
GeschichteService
[Spring
Service]
Manages
story
lifecycle
(DRAFT
â
PUBLISHED
with
timestamp).
Sanitizes
HTML
body
with
an
allowlist
policy.
«component»
GlobalExceptionHandler
[Spring
@RestControllerAdvice]
Converts
DomainException,
validation
errors,
and
generic
exceptions
to
ErrorResponse
JSON
with
machine-readable
ErrorCode
and
HTTP
status.
«container»
Web
Frontend
[SvelteKit]
«container»
PostgreSQL
[PostgreSQL
16]
«component»
DocumentService
[Spring
Service]
See
diagram
3b.
Called
by
DashboardService
to
fetch
document
titles
and
resume
data.
«component»
TranscriptionService
[Spring
Service]
See
diagram
3c.
Called
by
DashboardService
to
fetch
transcription
block
progress
for
resume.
Dashboard
requests
[HTTP
/
JSON]
GET
/api/stats
[HTTP
/
JSON]
Notification
stream
and
history
[HTTP
/
JSON
/
SSE]
Story
requests
[HTTP
/
JSON]
Delegates
to
Delegates
to
Reads
aggregate
counts
[JDBC]
Fetches
activity
feed
and
pulse
stats
Fetches
document
titles
and
resume
data
Fetches
transcription
block
progress
for
resume
Delegates
to
Registers
client
SSE
connection
Broadcasts
events
to
connected
clients
Delegates
to
Writes
audit_log
[JDBC]
Reads
audit_log
[JDBC]
Reads
/
writes
notifications
[JDBC]
Reads
/
writes
geschichten
[JDBC]
Reference in New Issue
View Git Blame
Copy Permalink