| .github | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| artisan | ||
| check_tenant_settings.php | ||
| check_tenants.php | ||
| check_users.php | ||
| composer.json | ||
| composer.lock | ||
| debug_machines.php | ||
| form_test.html | ||
| MYSQL_SETUP.md | ||
| mysql_setup.sql | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| setup_mysql.bat | ||
| setup_mysql.sh | ||
| test_routes.php | ||
| test_tenant_direct.php | ||
| vite.config.js | ||
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
# 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
composer install
3. Umgebung konfigurieren
# .env-Datei erstellen (falls nicht vorhanden)
cp .env.example .env
# Application Key generieren (falls noch nicht geschehen)
php artisan key:generate
4. Datenbank einrichten
# 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
# 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:
- MySQL-Datenbank erstellen
- Benutzer anlegen
- .env für MySQL konfigurieren
- Migrationen ausführen
# 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
- Migration erstellen:
php artisan make:migration add_field_to_products_table - Model erweitern:
app/Models/Product.php-$fillableArray - Controller anpassen: Validierung in
ProductController.php - Views erweitern: Formulare und Anzeigen
Mehrsprachigkeit
- Laravel Localization kann nachträglich integriert werden
- Views sind bereits strukturiert für einfache Übersetzung
Support & Wartung
Backup
# Datenbank-Backup
php artisan backup:run
# Produktbilder: storage/app/public/products/
Updates
# 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