K8n hosted Spring Boot based blog
Find a file
Tom Irgang b848b07349
Some checks are pending
CI / build (push) Waiting to run
CI / docs (push) Blocked by required conditions
CI / requirements (push) Waiting to run
CI / container (blog-content) (push) Blocked by required conditions
CI / container (feed) (push) Blocked by required conditions
CI / container (tenant-management) (push) Blocked by required conditions
CI / container (user-management) (push) Blocked by required conditions
CI / release-assets (push) Blocked by required conditions
chore: set development version 0.10.5-SNAPSHOT
2026-05-10 19:42:14 +02:00
.devcontainer kafka and rabbitmq 2026-05-01 12:16:04 +02:00
.github fix arc diagrams 2026-05-10 19:35:14 +02:00
.mvn fuzz testing 2026-05-01 13:42:25 +02:00
.settings more design decisisons 2026-05-01 07:20:55 +02:00
.vscode search 2026-05-03 10:56:54 +02:00
docs chore: set development version 0.10.5-SNAPSHOT 2026-05-10 19:42:14 +02:00
e2e-tests chore: set development version 0.10.5-SNAPSHOT 2026-05-10 19:42:14 +02:00
infra release: v0.10.5 2026-05-10 19:42:06 +02:00
libs chore: set development version 0.10.5-SNAPSHOT 2026-05-10 19:42:14 +02:00
reqs Fix sec and arc findings, improve tests and docs 2026-05-10 10:22:43 +02:00
scripts auditlog view 2026-05-08 20:25:07 +02:00
services chore: set development version 0.10.5-SNAPSHOT 2026-05-10 19:42:14 +02:00
.gitignore fix setup on new machine 2026-05-01 08:06:18 +02:00
.project fix setup on new machine 2026-05-01 08:06:18 +02:00
.sops.yaml Encrypt blog-content-secrets with SOPS + age 2026-05-02 14:48:09 +02:00
AGENTS.md auditlog view 2026-05-08 20:25:07 +02:00
antora-playbook.yml fix arc diagrams 2026-05-10 19:35:14 +02:00
CHANGELOG.md release: v0.10.5 2026-05-10 19:42:06 +02:00
get_helm.sh flux for gitops 2026-05-02 10:59:05 +02:00
LICENSE Initial commit 2026-04-30 07:29:02 +02:00
mvnw prepare maven projects 2026-04-30 10:46:16 +02:00
mvnw.cmd prepare maven projects 2026-04-30 10:46:16 +02:00
package.json fix arc diagrams 2026-05-10 19:35:14 +02:00
pom.xml chore: set development version 0.10.5-SNAPSHOT 2026-05-10 19:42:14 +02:00
README.md improve tenant UI 2026-05-08 07:35:55 +02:00
requirements.txt start docs and reqs 2026-04-30 12:30:14 +02:00
ROADMAP.md add chaos testing 2026-05-01 17:37:19 +02:00
TODO.md fix deploy and grafana 2026-05-10 15:42:46 +02:00

Toms Blog

Eine multi-tenant Blog- und Podcast-Plattform mit KI-Unterstützung, gebaut als Lernprojekt für moderne Cloud-Native-Architekturen.

Überblick

Toms Blog ist eine vollwertige Content-Plattform, die als Lernprojekt für moderne Software-Architektur und Cloud-Native-Technologien dient. Die Plattform unterstützt mehrsprachige Blog-Posts, Audio- und Video-Podcasts sowie KI-gestützte Content-Erstellung betrieben auf einer produktionsnahen Kubernetes-Infrastruktur.

Architektur

Das System folgt einer hexagonalen Architektur (Ports & Adapters) und ist als Microservice-Landschaft umgesetzt. Die Architektur ist audit-fähig konzipiert, sodass alle relevanten Aktionen nachvollziehbar protokolliert werden.

Backend: Spring Boot (Java/Kotlin)

Services

Service Funktion Pfad
blog-content Blog-Posts, Tags, Übersetzungen, Thymeleaf-UI /, /posts/**
user-management Login, Registrierung, Admin-UI, OIDC, Benutzerverwaltung /auth/**

Infrastruktur

Komponente Technologie
Orchestrierung Hetzner Kubernetes (3-Node-Cluster via kube-hetzner)
Messaging Apache Kafka (Event-Streaming), RabbitMQ (Task-Queues)
Relationale DB PostgreSQL (CloudNativePG Operator) - Database per Service
Dokument-DB MongoDB (per Service, wo passend)
Session-Store Redis (Shared Sessions zwischen Services)
Observability Prometheus, Grafana, Loki, Tempo
GitOps Flux (ADR-0020)
Backup-Storage Netcup VM mit Garage (S3-kompatibel)

Deployment & GitOps

Das Deployment erfolgt vollständig über GitOps-Prinzipien. Infrastruktur- und Anwendungskonfiguration werden deklarativ in Git verwaltet und automatisch über Flux synchronisiert.

Features

Content Management

  • Multilang Blog Beiträge in mehreren Sprachen verfassen und verwalten
  • WYSIWYG-Editor Komfortables Erstellen und Bearbeiten von Inhalten
  • Attachments Dateianhänge für Blog-Posts
  • Quellenverwaltung Quellenangaben für Posts mit integriertem Quellenmanagement
  • Automatische Web-Snapshots Referenzierte Webseiten werden automatisch archiviert

Podcast & Media

  • Audio-Podcast-Support Veröffentlichung von Audio-Episoden
  • Video-Podcast-Support Veröffentlichung von Video-Episoden
  • Automatische Podcast-Generierung TTS-basierte Audio-Versionen von Blog-Posts

Feeds

  • Mixed Content Feeds Kombinierte Feeds über verschiedene Content-Typen
  • Single Content Feeds Dedizierte Feeds pro Content-Typ
  • Tag-basierte Feeds Feeds basierend auf Tags und Kategorien

KI-Integration (via OpenRouter)

  • Automatische Übersetzung Blog-Posts automatisch in andere Sprachen übersetzen
  • Schreibassistenz KI-gestützte Unterstützung beim Verfassen von Inhalten
  • Titelbild-Generierung Optionale automatische Erstellung von Titelbildern

Benutzerverwaltung

  • Multi-User Mehrere Autoren und Rollen
  • Multi-Tenant Mandantenfähigkeit für getrennte Blog-Instanzen
  • OIDC-Login Externe Authentifizierung via Authentik (pro Tenant konfigurierbar)
  • Lokale Registrierung Benutzername/Passwort-Registrierung mit Admin-Freigabe
  • Admin-UI Administrationsoberfläche zur Verwaltung der Plattform
  • Kommentare Kommentarfunktion für Leser

Dokumentation

Die Projektdokumentation folgt dem arc42-Template und wird mit folgenden Tools gepflegt:

  • Architekturdokumentation: AsciiDoc + Antora, Diagramme mit PlantUML
  • Architecture Decision Records (ADRs): Markdown mit Mermaid-Diagrammen, gerendert via MkDocs

Lizenz

Siehe LICENSE.