# 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 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