236 lines
6.6 KiB
Markdown
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
|