LMIV-SNACKAUTOMAT/README.md

236 lines
6.6 KiB
Markdown

# LMIV Snackautomat Management System
Ein Laravel-basiertes Web-Management-System für Snackautomaten mit vollständiger LMIV-Konformität (Lebensmittelinformationsverordnung).
## Neue Features
### 🔐 Backend-Authentifizierung
- Sicheres Admin-Backend mit Login-System
- Benutzerregistrierung und -verwaltung
- Session-basierte Authentifizierung
### 🔗 Direkte Automaten-URLs
- Automaten können direkt über URL aufgerufen werden
- Format: `http://ihre-domain/machine/{id}`
- Ideal für QR-Codes oder Direktlinks
### 🗄️ MySQL-Unterstützung
- Vollständige MySQL-Datenbankunterstützung
- Einfache Migration von SQLite zu MySQL
- Netzwerk-fähige Datenbank für mehrere Clients
## Features
### 🍫 Produktkatalog mit LMIV-Daten
- Vollständige Nährwertangaben pro 100g
- Zutatenlisten und Allergen-Informationen
- Hersteller- und Herkunftsangaben
- Aufbewahrungshinweise und Verwendungsempfehlungen
- Produktbilder
### 🏪 Automatenverwaltung
- Verwaltung mehrerer Snackautomaten
- Standortinformationen
- Status-Verwaltung (aktiv/inaktiv)
### 📦 Fachverwaltung
- Konfiguration der Automatenfächer mit Fachnummern
- Kapazitätsverwaltung
- Produkt-zu-Fach-Zuordnung
- Bestandsverwaltung
### 🖥️ Öffentliche Anzeige
- Benutzerfreundliche Auswahl nach Fachnummer
- Produktinformationen gemäß LMIV auf Knopfdruck
- Responsive Design für Touch-Displays
- Übersichtliche Darstellung verfügbarer Produkte
### 👨‍💼 Admin-Backend
- Komplette Produktverwaltung
- Automatenkonfiguration
- Fach- und Bestandsverwaltung
- Dashboard mit Übersicht
## Technische Anforderungen
- PHP 8.1 oder höher
- Composer
- SQLite/MySQL/PostgreSQL
- Node.js (optional, für Asset-Kompilierung)
## Installation
### 1. Repository klonen/herunterladen
```bash
# Falls Git verwendet wird
git clone <repository-url>
cd LMIV-Snackautomat
# Oder das Projekt direkt verwenden wenn bereits vorhanden
cd d:\Entwicklung\LMIV-Snackautomat
```
### 2. Abhängigkeiten installieren
```bash
composer install
```
### 3. Umgebung konfigurieren
```bash
# .env-Datei erstellen (falls nicht vorhanden)
cp .env.example .env
# Application Key generieren (falls noch nicht geschehen)
php artisan key:generate
```
### 4. Datenbank einrichten
```bash
# Migrationen ausführen
php artisan migrate
# Beispieldaten laden (optional)
php artisan db:seed --class=ProductSeeder
# Storage-Link erstellen für Produktbilder
php artisan storage:link
```
### 5. Server starten
```bash
# Für lokale Entwicklung
php artisan serve
# Für Netzwerkzugriff (alle Geräte im Netzwerk)
php artisan serve --host=0.0.0.0 --port=8001
```
Die Anwendung ist dann unter `http://localhost:8000` (lokal) oder `http://ihre-ip:8001` (Netzwerk) erreichbar.
## Verwendung
### Öffentliche Anzeige
- Hauptseite: `http://localhost:8001`
- Direkte Automatenwahl: `http://localhost:8001/machine/{id}`
- Zeigt alle verfügbaren Produkte mit Fachnummern
- Klick auf Produkt zeigt LMIV-Informationen
### Admin-Bereich (Login erforderlich)
- Admin Login: `http://localhost:8001/login`
- Admin Dashboard: `http://localhost:8001/admin`
- Produktverwaltung: `http://localhost:8001/admin/products`
- Automatenverwaltung: `http://localhost:8001/admin/vending-machines`
- Fachverwaltung: `http://localhost:8001/admin/slots`
### Standard-Anmeldedaten
- **Email**: admin@snackautomat.local
- **Passwort**: admin123
- **Zweiter Account**: verwalter@snackautomat.local / verwalter123
⚠️ **WICHTIG**: Ändern Sie diese Passwörter nach dem ersten Login!
## Projektstruktur
```
app/
├── Http/Controllers/
│ ├── ProductController.php # Produktverwaltung
│ ├── VendingMachineController.php # Automatenverwaltung
│ ├── SlotController.php # Fachverwaltung
│ └── VendingDisplayController.php # Öffentliche Anzeige
├── Models/
│ ├── Product.php # Produkt-Model mit LMIV-Daten
│ ├── VendingMachine.php # Automat-Model
│ ├── Slot.php # Fach-Model
│ └── SlotProduct.php # Zuordnung Fach-Produkt
database/
├── migrations/ # Datenbankstruktur
└── seeders/
└── ProductSeeder.php # Beispieldaten
resources/views/
├── layouts/
│ └── app.blade.php # Haupt-Layout
├── vending/ # Öffentliche Anzeige
│ ├── index.blade.php # Hauptseite
│ └── product-details.blade.php # LMIV-Detailansicht
└── admin/ # Admin-Bereich
├── dashboard.blade.php # Admin-Dashboard
└── products/ # Produktverwaltung
```
## LMIV-Konformität
Das System unterstützt alle relevanten Angaben gemäß der EU-Lebensmittelinformationsverordnung:
- **Nährwerte**: Brennwert (kJ/kcal), Fett, gesättigte Fettsäuren, Kohlenhydrate, Zucker, Eiweiß, Salz
- **Zutaten**: Vollständige Zutatenliste
- **Allergene**: Kennzeichnung allergener Stoffe
- **Herkunft**: Herkunftsangaben
- **Hersteller**: Herstellerinformationen
- **Aufbewahrung**: Lagerungshinweise
- **Mindesthaltbarkeit**: Haltbarkeitsinformationen
## MySQL-Einrichtung
Für die Verwendung mit MySQL folgen Sie der Anleitung in `MYSQL_SETUP.md`:
1. **MySQL-Datenbank erstellen**
2. **Benutzer anlegen**
3. **.env für MySQL konfigurieren**
4. **Migrationen ausführen**
```bash
# Nach MySQL-Setup
php artisan migrate
php artisan db:seed --class=AdminUserSeeder
php artisan db:seed --class=ProductSeeder
```
### Design anpassen
- CSS-Framework: Tailwind CSS
- Layout-Datei: `resources/views/layouts/app.blade.php`
- Farbschema in Tailwind-Klassen anpassbar
### Weitere Felder hinzufügen
1. Migration erstellen: `php artisan make:migration add_field_to_products_table`
2. Model erweitern: `app/Models/Product.php` - `$fillable` Array
3. Controller anpassen: Validierung in `ProductController.php`
4. Views erweitern: Formulare und Anzeigen
### Mehrsprachigkeit
- Laravel Localization kann nachträglich integriert werden
- Views sind bereits strukturiert für einfache Übersetzung
## Support & Wartung
### Backup
```bash
# Datenbank-Backup
php artisan backup:run
# Produktbilder: storage/app/public/products/
```
### Updates
```bash
# Abhängigkeiten aktualisieren
composer update
# Cache leeren nach Updates
php artisan cache:clear
php artisan config:clear
php artisan view:clear
```
## Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Weitere Details in der LICENSE-Datei.
## Entwickelt für
- Betreiber von Snackautomaten
- Catering-Unternehmen
- Büro- und Industriekomplexe
- Bildungseinrichtungen
- Jeder, der LMIV-konforme Produktinformationen bereitstellen muss