Zum Inhalt

🔵 Phase 2 – Zielarchitektur

Home Dev Platform (Raspberry Pi)


1. 🧭 Architekturüberblick

Die Architektur der Home Dev Platform basiert auf folgenden Prinzipien:

  • Service-orientierte Architektur
  • Headless Backend-Services
  • Progressive Web Apps (PWA) als Frontend
  • Containerisierte Services (Docker)
  • API-first Design
  • Sichere Erreichbarkeit über Cloudflare Tunnel
  • Optionaler VPN-Zugriff für Remote Development

2. 🧱 Architektur-Levels (C4 Model)

Die Architektur wird nach dem C4-Modell beschrieben:

  • Level 1: System Context
  • Level 2: Container Diagram
  • Level 3: Component View (Hello World)
  • Level 4: Code (in Phase 3)

3. 🌍 System Context

Beschreibung

Das System stellt eine self-hosted Plattform bereit, die über das Internet sicher erreichbar ist und gleichzeitig eine sichere Remote-Entwicklung ermöglicht.


C4 System Context Diagram

«person»Nutzer Zugriff über Browser(Desktop/Mobile)«person»Entwickler Christoph - Entwicklung,Betrieb, Konfiguration«external_system»Cloudflare DNS + Tunnel + TLSKein offener Port amHeimrouter«external_system»GitHub Remote Git Repositorymatu-pi/matus-toolbox«external_system»Tailscale VPN Sicherer Remote-Zugrifffür Entwicklung undWartung«system»Home Dev Platform Microservice-Plattform aufRaspberry PiTraefik · Frontend ·Backend-Services ·PostgreSQLHTTPS-ZugriffCloudflare Tunnel (keinoffener Port)git push / pullgit pull (manuell)SSH + VS Code Remote (überTailscale)VPN-VerbindungNetzwerktunnel

4. 🧱 Container Architektur

Beschreibung

Die Plattform besteht aus mehreren Containern, die jeweils eine klar definierte Aufgabe erfüllen:


Container

Edge Layer

  • Cloudflare (extern)

Entry Layer

  • Reverse Proxy (Traefik)

Platform Layer

  • Gitea (Git Hosting)

Application Layer (Hello World)

  • Backend API
  • Frontend PWA
  • PostgreSQL

C4 Container Diagram

«system_boundary»«boundary»Raspberry Pi - Docker Host[System]«container_boundary»«boundary»Application Services[Container]«container»Traefik[Reverse Proxy v2.11] Routing via PathPrefix,Port 80 nach außen«container»Frontend[React/Vite PWA] Single Page App,Path: /«container»PostgreSQL[PostgreSQL 15] Schema public: notesSchema market_data:forex_ohlcv,economic_events,economic_indicators,correlation_data«container»Backend[FastAPI :8000] Hello World · Lunch ScraperPush Alerts · Trading JournalAuth · Users · Logs · SystemPath: /api  strip  /«container»Trading Data Layer[FastAPI :8001] Forex/Economic CollectorPath: /data-layer  strip  /«container»Trend Analysis[FastAPI :8002] Technische Indikatoren,Fundamental Analysis,Interpretation, Trade-SetupPath: /trend-analysis  strip /«container»Trade Optimizer[FastAPI :8004] Score-Aggregation, MTF,Mustererkennung (5min)Path: /trade-optimizer strip  /«person»Nutzer«person»Entwickler«external_system»Cloudflare Tunnel TLS-Terminierung, keinoffener PortHTTPSCloudflare TunnelPathPrefix /PathPrefix /apiPathPrefix /data-layerPathPrefix /trend-analysisPathPrefix /trade-optimizerHTTP intern (asyncio.gather)Score, MTF, Trade-SetupSchreiben: OHLCV, Events,IndikatorenLesen: OHLCV fürIndikatorenLesen: 5min OHLCV fürMustererkennungLesen/Schreiben: notesSSH/Tailscale - Verwaltung

5. 🔄 Datenfluss

Beschreibung

Die Kommunikation im System erfolgt ausschließlich über klar definierte Schnittstellen.


Zugriff auf Frontend

Externer Zugriff (Nutzer)NutzerCloudflareCloudflareTraefikFrontendBackend-ServicesNutzerNutzerCloudflareDNS + TLSCloudflareDNS + TLSCloudflareTunnelCloudflareTunnelTraefik:80 (intern)Traefik:80 (intern)Frontend(React SPA)Frontend(React SPA)Backend-Services(FastAPI)Backend-Services(FastAPI)https://app.domain.tld(TLS-verschlüsselt)Weiterleitung über Tunnel(kein offener Port am Heimrouter)HTTP internGET / → Frontend SPAFrontend lädt im Browser,danach direkte API-Calls über TraefikAPI-Calls via SPA/trend-analysis/api/v1/...TunnelHTTPPathPrefix-Routing → Service

API-Kommunikation

Service-Kommunikation (inter-service)NutzerFrontendTrend AnalysisTrade OptimizerTrading Data LayerPostgreSQLNutzer(Browser)Nutzer(Browser)Frontend(React SPA)Frontend(React SPA)Trend Analysis:8002Trend Analysis:8002Trade Optimizer:8004Trade Optimizer:8004Trading Data Layer:8001Trading Data Layer:8001PostgreSQLmarket_dataPostgreSQLmarket_dataTrendanalyse / Fundamentalanalyse (direkt vom Frontend)Tab: Trend AnalysisGET /trend-analysis/api/v1/interpretation?pair=EUR/USD&timeframe=1hGET /trend-analysis/api/v1/fundamental/score?pair=EUR/USDSELECT forex_ohlcv, economic_indicatorsScore, Kategorie, IndikatorenTrade Optimizer (kombinierter Abruf)Tab: Trade OptimizerGET /trade-optimizer/api/v1/trade-optimizer/analyze?pair=EUR/USDasyncio.gather (parallel)GET /api/v1/interpretation?pair=...&timeframe=1h (Trend Score)GET /api/v1/fundamental/score?pair=... (Fundamental Score)GET /api/v1/interpretation?pair=...&timeframe=15min (MTF)GET /api/v1/interpretation?pair=...&timeframe=4h (MTF)GET /api/v1/interpretation?pair=...&timeframe=daily (MTF)SELECT forex_ohlcv WHERE timeframe=5min (Mustererkennung)trend, fundamental, mtf, setup, patternsGET /trade-optimizer/api/v1/trade-optimizer/libraryPATTERN_LIBRARY (statisch)Datensammlung (Hintergrund, kein User-Trigger)INSERT forex_ohlcv (5min OHLCV, Scheduler)INSERT economic_eventsINSERT economic_indicators

Deployment Flow

Deployment-WorkflowEntwicklerGitHubRaspberry PiDockerEntwickler(Laptop)Entwickler(Laptop)GitHub(remote)GitHub(remote)Raspberry Pi(SSH)Raspberry Pi(SSH)DockerComposeDockerComposeCode-Änderung deployengit push origin masterSSH (über Tailscale)git pullBei Remote liegt immer ein Commit vor→ git stash && git pull --rebase && git stash popdocker compose up --build -d <service>--build: rebuild Image (Code-Änderungen einschließen)-d: detachedNICHT: docker compose restart(nimmt keine Code-Änderungen mit!)Build Image + Start ContainerService läuftNeuen Service hinzufügendocker compose up --build -d <neuer-service>Service muss in docker-compose.yml definiert seinmit Traefik labels (PathPrefix, strip-prefix, Port)

6. 🧩 Komponentenbeschreibung


Reverse Proxy (Traefik)

Verantwortung: - Routing basierend auf Subdomain - Absicherung von Zugriffen - interne Service-Isolation


Backend API

Technologie: - Python (FastAPI)

Aufgaben: - Bereitstellung von REST APIs - Verarbeitung von Requests - Zugriff auf Datenbank


Datenbank

Technologie: - PostgreSQL

Aufgaben: - Persistente Speicherung - einfache Datenstruktur für Referenzsystem


Frontend (PWA)

Technologie: - React / Vite

Aufgaben: - Benutzeroberfläche - API-Kommunikation - mobile Nutzung


Git Server (Gitea)

Aufgaben: - Repository Hosting - Versionierung - Grundlage für Deployment


7. 🔐 Sicherheitsarchitektur


Prinzipien

  • Kein direkter Zugriff auf interne Services
  • Kommunikation ausschließlich über Reverse Proxy
  • HTTPS erzwingen

Mechanismen

1. Cloudflare Tunnel

  • keine offenen Ports
  • sichere Verbindung zur Plattform

2. HTTPS

  • TLS über Cloudflare

3. Authentifizierung

  • optional auf Proxy-Ebene
  • optional auf API-Ebene

4. Secret Management

  • Environment Variablen
  • keine Speicherung im Code

8. 🧠 Remote Development Architektur

Remote Development SetupEntwicklerLaptopTailscale VPNRaspberry PiDockerClaude CLIEntwicklerEntwicklerLaptop(macOS/Linux)Laptop(macOS/Linux)Tailscale VPNTailscale VPNRaspberry Pi(SSH :22)Raspberry Pi(SSH :22)DockerEnvironmentDockerEnvironmentClaude CLI(claude-code)Claude CLI(claude-code)VS Code (lokal)VPN-VerbindungTailscale-NetzwerkSSH Remote Development(VS Code Remote SSH Extension)Claude Code CLI(claude-sonnet-4-6)Service-Entwicklungdocker compose up --build -d <service>docker compose logs -f <service>docker compose exec <service> bashKI-gestützte EntwicklungDirekter Datei-Zugriff auf /home/matu/projectsKein separates Deployment notwendig

Beschreibung

Der Entwickler nutzt den Raspberry Pi als Remote-Workstation:

  • Zugriff über VPN (Tailscale)
  • Bearbeitung von Code direkt auf dem Pi
  • Nutzung von VS Code Remote

9. 🌐 Domain- & Routing-Konzept


Subdomains

Domain Zweck
app.domain.dev Frontend
api.domain.dev Backend
git.domain.dev Git

Routing

  • Cloudflare → Tunnel → Reverse Proxy
  • Reverse Proxy → Service

10. 🧪 Hello World Referenzarchitektur


Ziel

Validierung der Plattform durch ein minimales, aber vollständiges System.


Komponenten

  • Frontend (PWA)
  • Backend API
  • Datenbank

Architektur

Service-Struktur (Muster je Service)Jeder Application ServiceTrading Services (konkret)React SPA(Frontend)Traefik(Proxy)FastAPI(Backend)PostgreSQL(Datenbank)Frontend(React/Vite)TraefikTrend Analysis :8002Trade Optimizer :8004Trading Data Layer :8001PostgreSQLmarket_data

11. ⚙️ Technologiestack


Backend

  • Python FastAPI

Frontend

  • React + Vite

Datenbank

  • PostgreSQL

Infrastruktur

  • Docker + Docker Compose

Proxy

  • Traefik

Zugriff

  • Cloudflare Tunnel
  • optional Tailscale

12. ✅ Fazit

Diese Architektur erfüllt alle Anforderungen aus Phase 1:

  • modular
  • sicher
  • erweiterbar
  • KI-optimiert
  • realistisch auf Raspberry Pi betreibbar

13. 🔜 Übergang zu Phase 3

In Phase 3 werden definiert:

  • API-Spezifikationen
  • Datenmodelle
  • konkrete docker-compose Dateien
  • Service-Strukturen

Changelog

Version Datum Änderungen
1.0 2026-06-25 Initiale Version