Files
Projektarbeit-MYP/backend/app/README.md
Till Tomczak 2d33753b94 feat: Major updates to backend structure and security enhancements
- Removed `COMMON_ERRORS.md` file to streamline documentation.
- Added `Flask-Limiter` for rate limiting and `redis` for session management in `requirements.txt`.
- Expanded `ROADMAP.md` to include completed security features and planned enhancements for version 2.2.
- Enhanced `setup_myp.sh` for ultra-secure kiosk installation, including system hardening and security configurations.
- Updated `app.py` to integrate CSRF protection and improved logging setup.
- Refactored user model to include username and active status for better user management.
- Improved job scheduler with uptime tracking and task management features.
- Updated various templates for a more cohesive user interface and experience.
2025-05-25 20:33:38 +02:00

128 lines
4.0 KiB
Markdown

# 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 <repository-url>
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`.