|
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
|
||
|---|---|---|
| .devcontainer | ||
| .github | ||
| .mvn | ||
| .settings | ||
| .vscode | ||
| docs | ||
| e2e-tests | ||
| infra | ||
| libs | ||
| reqs | ||
| scripts | ||
| services | ||
| .gitignore | ||
| .project | ||
| .sops.yaml | ||
| AGENTS.md | ||
| antora-playbook.yml | ||
| CHANGELOG.md | ||
| get_helm.sh | ||
| LICENSE | ||
| mvnw | ||
| mvnw.cmd | ||
| package.json | ||
| pom.xml | ||
| README.md | ||
| requirements.txt | ||
| ROADMAP.md | ||
| TODO.md | ||
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.