Projektarbeit-MYP/docs/PROJECT_STRUCTURE.md

6.8 KiB

🏗️ MYP Projektstruktur - Perfektionierte Architektur

📋 Übersicht

MYP (Manage your Printer) ist ein containerbasiertes Microservice-System mit klarer Trennung zwischen Frontend und Backend.

🗂️ Verzeichnisstruktur

Projektarbeit-MYP/
├── 🖥️ backend/                    # Flask API Server (Port 5000)
│   ├── 📁 src/                     # Hauptanwendungslogik
│   │   ├── 📁 api/                 # API Endpunkte
│   │   ├── 📁 models/              # Datenmodelle
│   │   ├── 📁 services/            # Geschäftslogik
│   │   ├── 📁 auth/                # Authentifizierungslogik
│   │   └── 📁 utils/               # Hilfsfunktionen
│   ├── 📁 tests/                   # Unit- und Integrationstests
│   ├── 📁 migrations/              # Datenbankmigrationen
│   ├── 📁 instance/                # SQLite Datenbank (gitignore)
│   ├── 📁 logs/                    # Anwendungslogs (gitignore)
│   ├── 📁 config/                  # Konfigurationsdateien
│   ├── 📄 Dockerfile               # Backend Container
│   ├── 📄 requirements.txt         # Python Abhängigkeiten
│   ├── 📄 app.py                   # Flask Anwendung Einstiegspunkt
│   └── 📄 .env.example             # Umgebungsvariablen Vorlage
│
├── 🌐 frontend/                    # Next.js Web Interface (Port 3000)
│   ├── 📁 src/                     # Hauptanwendungslogik
│   │   ├── 📁 app/                 # Next.js App Router
│   │   ├── 📁 components/          # React Komponenten
│   │   ├── 📁 lib/                 # Bibliotheken und Utilities
│   │   └── 📁 types/               # TypeScript Typdefinitionen
│   ├── 📁 public/                  # Statische Assets
│   ├── 📁 drizzle/                 # Frontend Datenbankschema
│   ├── 📁 tests/                   # Frontend Tests
│   ├── 📄 Dockerfile               # Frontend Container
│   ├── 📄 package.json             # Node.js Abhängigkeiten
│   ├── 📄 next.config.mjs          # Next.js Konfiguration
│   └── 📄 .env.example             # Umgebungsvariablen Vorlage
│
├── 🔄 proxy/                       # Caddy Reverse Proxy (Port 80/443)
│   ├── 📄 Caddyfile                # Proxy Konfiguration
│   └── 📄 docker-compose.caddy.yml # Caddy Service Definition
│
├── 📊 monitoring/                  # Überwachung und Logging
│   ├── 📁 grafana/                 # Dashboards
│   ├── 📁 prometheus/              # Metriken
│   └── 📄 docker-compose.monitoring.yml
│
├── 🔧 infrastructure/              # Infrastruktur-Konfiguration
│   ├── 📁 scripts/                 # Automatisierungsskripte
│   │   ├── 📄 start.sh             # Linux/MacOS Start
│   │   ├── 📄 start.ps1            # Windows Start
│   │   ├── 📄 cleanup.sh           # Linux/MacOS Bereinigung
│   │   └── 📄 cleanup.ps1          # Windows Bereinigung
│   ├── 📁 environments/            # Umgebungskonfigurationen
│   │   ├── 📄 development.env      # Entwicklungsumgebung
│   │   ├── 📄 production.env       # Produktionsumgebung
│   │   └── 📄 testing.env          # Testumgebung
│   └── 📁 ssl/                     # SSL Zertifikate (gitignore)
│
├── 📚 docs/                        # Projektdokumentation
│   ├── 📄 API.md                   # API Dokumentation
│   ├── 📄 DEPLOYMENT.md            # Deployment Anweisungen
│   ├── 📄 DEVELOPMENT.md           # Entwicklungsrichtlinien
│   └── 📄 ARCHITECTURE.md          # Systemarchitektur
│
├── 🧪 tests/                       # Übergreifende Tests
│   ├── 📁 integration/             # Integrationstests
│   ├── 📁 e2e/                     # End-to-End Tests
│   └── 📄 docker-compose.test.yml  # Test Environment
│
├── 📄 docker-compose.yml           # Hauptkomposition (Prod)
├── 📄 docker-compose.dev.yml       # Entwicklungsumgebung
├── 📄 docker-compose.override.yml  # Lokale Overrides
├── 📄 .gitignore                   # Git Ignorierte Dateien
├── 📄 .dockerignore                # Docker Ignorierte Dateien
├── 📄 README.md                    # Projekt Hauptdokumentation
└── 📄 PROJECT_STRUCTURE.md         # Diese Strukturdokumentation

🔌 Service-Kommunikation

Interne Container-Kommunikation

  • Frontend → Backend: http://backend:5000/api
  • Proxy → Frontend: http://frontend:3000
  • Proxy → Backend: http://backend:5000

Externe Zugriffe

  • Web Interface: https://localhost (über Caddy Proxy)
  • API Direct: http://localhost:5000 (nur Entwicklung)
  • Frontend Direct: http://localhost:3000 (nur Entwicklung)

🌐 Netzwerk-Architektur

Internet/Intranet
       ↓
[Caddy Proxy] (80/443)
       ↓
   ┌─────────┬─────────┐
   ↓         ↓         ↓
[Frontend] [Backend] [Monitoring]
 (3000)     (5000)    (9090/3001)
   ↓         ↓
[SQLite]  [SQLite]

🔐 Sicherheitskonzept

Umgebungsvariablen

  • Sensible Daten nur über .env Dateien
  • Produktionsgeheimnisse über sichere Umgebungsvariablen
  • Keine Geheimnisse in Git-Repository

Netzwerksicherheit

  • Container-isolierte Netzwerke
  • Nur notwendige Ports exponiert
  • HTTPS-Verschlüsselung über Caddy
  • Firewall-kompatible Konfiguration

Authentifizierung

  • JWT-Token für API-Authentifizierung
  • Session-basierte Frontend-Authentifizierung
  • OAuth2 Integration vorbereitet

🚀 Deployment-Strategien

Entwicklung

# Linux/MacOS
./infrastructure/scripts/start.sh dev

# Windows
.\infrastructure\scripts\start.ps1 dev

Produktion

# Linux/MacOS
./infrastructure/scripts/start.sh prod

# Windows
.\infrastructure\scripts\start.ps1 prod

📦 Container-Optimierungen

Multi-Stage Builds

  • Frontend: Node.js Build → Minimales Runtime Image
  • Backend: Python Requirements → Optimiertes Laufzeit-Image
  • Reduzierte Image-Größen und Sicherheitsoberfläche

Health Checks

  • Automatische Gesundheitsprüfungen für alle Services
  • Graceful Restart bei Fehlern
  • Monitoring-Integration

Volume Management

  • Persistente Datenbank-Volumes
  • Log-Rotation und -Management
  • Backup-freundliche Struktur

🔄 CI/CD Integration

Git Hooks

  • Pre-commit Linting und Testing
  • Automatische Dependency Updates
  • Security Scanning

Container Registry

  • Automatisches Image Building
  • Versionierung über Git Tags
  • Multi-Architecture Support (x86_64, ARM64)