6.8 KiB
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)