# MYP Platform - 3D-Drucker Reservierungssystem Ein Reservierungssystem für 3D-Drucker, das automatisch TP-Link Tapo P110 Smart Plugs steuert, um die Stromversorgung von Druckern basierend auf den reservierten Zeitslots zu verwalten. ## Features - Reservierung von 3D-Druckern für bestimmte Zeiträume - Automatische Steuerung der TP-Link Tapo P110 Smart Plugs - Echtzeit-Überwachung von laufenden Druckaufträgen - Administrationsbereich für Druckerverwaltung - Benutzerauthentifizierung und Autorisierung - Statistiken zu Druckaufträgen und Materialverbrauch - Dark Mode für eine angenehme Nutzung bei schlechten Lichtverhältnissen - Responsive Design für verschiedene Gerätegrößen ## Technologie-Stack - **Backend**: Python 3.11 mit Flask - **Frontend**: HTML/CSS/JavaScript mit Tailwind CSS - **Datenbank**: SQLite mit SQLAlchemy ORM - **Authentifizierung**: Flask-Login - **Hardware-Integration**: PyP100 für Tapo Smart Plug Steuerung - **Automatisierung**: Integrierter Job-Scheduler für Drucker-Steuerung ## Systemanforderungen - Python 3.11+ - Node.js und npm (für Tailwind CSS) - Netzwerkzugang zu TP-Link Tapo P110 Smart Plugs - Unterstützte Betriebssysteme: Linux, Windows, macOS ## Installation 1. **Repository klonen**: ```bash git clone cd myp-platform ``` 2. **Python-Abhängigkeiten installieren**: ```bash cd backend/app pip install -r requirements.txt ``` 3. **Node-Abhängigkeiten installieren und CSS bauen**: ```bash npm install npm run build:css ``` 4. **Datenbank initialisieren**: ```bash python init_db.py ``` 5. **Server starten**: ```bash # Standardstart python app.py # Oder mit spezifischem Port (empfohlen) python app.py --port=5000 ``` ## API Endpunkte | Methode | Endpunkt | Beschreibung | |---------|------------------------|--------------------------------------------------------| | GET | /api/jobs | Gibt alle Jobs (für Admins) oder eigene Jobs zurück | | GET | /api/jobs/active | Gibt alle aktiven Druckaufträge zurück | | GET | /api/jobs/{id} | Gibt Details zu einem bestimmten Job zurück | | POST | /api/jobs | Erstellt eine neue Druckerreservierung | | GET | /api/printers | Gibt alle verfügbaren Drucker zurück | ## Scheduler Das System enthält einen eingebauten Scheduler, der automatisch: - Drucker einschaltet, wenn ein Auftrag beginnt - Drucker ausschaltet, wenn ein Auftrag endet - Den Status von Druckern aktualisiert - Die Auftragsstatistiken sammelt ## Konfiguration Die Konfiguration erfolgt über die Datei `config/settings.py`. Wichtige Einstellungen umfassen: - Datenbankpfad - Tapo-Zugangsdaten - Drucker-Konfigurationen - Logging-Einstellungen - Webserver-Einstellungen ## CSS-System Die Anwendung nutzt Tailwind CSS für das Styling mit separaten Dateien für Light- und Dark-Mode. ### Tailwind Build ```bash # CSS bauen npm run build:css # CSS im Watch-Modus (für Entwicklung) npm run watch:css ``` ## Sicherheit - Nur angemeldete Benutzer können Druckaufträge erstellen - Nur Besitzer eines Druckauftrags können diesen verwalten - Nur Administratoren haben Zugriff auf alle Jobs und Systemeinstellungen - Passwörter werden mit bcrypt gesichert ## Fehlerbehandlung und Logging Das System führt detaillierte Logs in folgenden Kategorien: - App-Log (allgemeine Anwendungslogs) - Auth-Log (Authentifizierungsereignisse) - Jobs-Log (Druckauftragsoperationen) - Printer-Log (Druckerstatusänderungen) - Scheduler-Log (Automatisierungsaktionen) - Error-Log (Fehlerprotokollierung) ## Entwicklung Diese Anwendung ist für den Offline-Betrieb konzipiert und verwendet keine externen CDNs. Weitere Informationen zur Entwicklungsumgebung finden Sie in der `TAILWIND_SETUP.md`.