# 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**: PyP110 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 pip install -r requirements.txt ``` 3. **Node-Abhängigkeiten installieren**: ```bash npm install ``` 4. **Datenbank initialisieren**: ```bash python3.11 init_db.py ``` 5. **CSS generieren**: ```bash npm run build:css ``` 6. **Server starten**: ```bash python3.11 app.py ``` ## 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 # Light Mode CSS bauen npx tailwindcss -i ./static/css/input.css -o ./static/css/tailwind.min.css --minify # Dark Mode CSS bauen npx tailwindcss -i ./static/css/input.css -o ./static/css/tailwind-dark.min.css --minify --dark-mode 'class' ``` Weitere Informationen zur CSS-Konfiguration finden Sie in der `TAILWIND_SETUP.md`. ## 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`.