341 lines
10 KiB
Markdown
Executable File
341 lines
10 KiB
Markdown
Executable File
# 🎨 NeoNail DB - Projekt Prompt
|
|
|
|
## 📋 Projekt-Übersicht
|
|
|
|
**NeoNail DB** ist eine Laravel-basierte Webanwendung zur Verwaltung von NeoNail-Nagellack-Sammlungen.
|
|
|
|
### 🎯 Hauptfunktionen
|
|
- ✅ Kollaborative Nagellack-Datenbank
|
|
- ✅ User können eigene Lacke hinzufügen (werden automatisch zum Hauptkatalog hinzugefügt)
|
|
- ✅ Hersteller-Verwaltung für alle User (flexibel und kollaborativ)
|
|
- ✅ Mobile-optimiert für Handy-Nutzung im Laden
|
|
- ✅ Admin-Interface für User-Verwaltung
|
|
- ✅ Bild-Upload mit automatischer Optimierung
|
|
- ✅ Suchfunktion nach Name/Nummer
|
|
- ✅ SQLite-Datenbank (einfach zu deployen)
|
|
|
|
## 🏗️ Technische Architektur
|
|
|
|
### Framework & Versionen
|
|
- **Laravel 12.22.1** (PHP 8.4.11)
|
|
- **Bootstrap 5** (Responsive Design)
|
|
- **Intervention Image** (Bildverarbeitung)
|
|
- **SQLite** (Datenbank)
|
|
|
|
### Datenbank-Schema
|
|
```sql
|
|
-- users (Laravel Standard)
|
|
-- manufacturers (Name, Description, Website, Country)
|
|
-- nail_polishes (Name, Number, Manufacturer_ID, Image)
|
|
-- user_nail_polishes (Pivot-Tabelle für User-Sammlungen)
|
|
```
|
|
|
|
### Wichtige Models
|
|
- `User` - Benutzer mit `nailPolishes()` Relationship
|
|
- `Manufacturer` - Hersteller mit `nailPolishes()` Relationship
|
|
- `NailPolish` - Nagellacke mit `users()` und `manufacturer()` Relationship
|
|
|
|
## 🔧 Aktuelle Deployment-Situation
|
|
|
|
### Webspace-Status
|
|
- **URL:** http://192.168.30.81/
|
|
- **Struktur:** Direkt im HTML-Verzeichnis
|
|
- **Status:** Neue .env Datei erstellt, Setup bereit
|
|
|
|
### Datei-Struktur auf Webspace
|
|
```
|
|
/html/ (oder /var/www/html/)
|
|
├── .htaccess ← Umleitung auf public/
|
|
├── index.php ← Fallback-Umleitung
|
|
├── .env ← Konfiguration (neu erstellt)
|
|
├── database.sqlite ← SQLite-Datenbank im Hauptverzeichnis
|
|
├── public/ ← Laravel Document Root
|
|
├── app/ ← Laravel App
|
|
├── bootstrap/ ← Laravel Bootstrap
|
|
├── config/ ← Laravel Config
|
|
├── database/ ← Migrationen
|
|
├── resources/ ← Views, Assets
|
|
├── routes/ ← Routen
|
|
├── storage/ ← Speicher (777 Berechtigungen)
|
|
├── vendor/ ← Composer Dependencies
|
|
├── test.php ← PHP-Diagnose
|
|
├── laravel-test.php ← Laravel-Diagnose
|
|
├── fix-permissions.sh ← Berechtigungs-Script
|
|
├── setup-html-directory.sh ← Neues Setup-Script
|
|
└── env-production-example.txt ← Neue .env Vorlage
|
|
```
|
|
|
|
### Aktuelle .env Konfiguration
|
|
```env
|
|
APP_NAME="NeoNail DB"
|
|
APP_ENV=production
|
|
APP_KEY=base64:+LTZYPKjkZ+O3iFTgU2sS+9bNvxxvG8Kw8JSEPiG7Rs=
|
|
APP_DEBUG=false
|
|
APP_URL=http://192.168.30.81
|
|
|
|
DB_CONNECTION=sqlite
|
|
DB_DATABASE=database.sqlite # ✅ Korrekt - Datenbank im Hauptverzeichnis
|
|
|
|
# Weitere Standard-Laravel-Einstellungen...
|
|
```
|
|
|
|
## 🚨 Offene Probleme
|
|
|
|
### 1. ✅ DB_DATABASE Pfad geklärt
|
|
**Status:** Datenbank liegt im Hauptverzeichnis
|
|
- **Pfad:** `/html/database.sqlite` (oder `/var/www/html/database.sqlite`)
|
|
- **Konfiguration:** `DB_DATABASE=database.sqlite` ✅
|
|
|
|
### 2. Deployment-Status
|
|
- ✅ Berechtigungen korrigiert (777 für storage/, bootstrap/cache/)
|
|
- ✅ APP_KEY generiert und gesetzt
|
|
- ✅ .htaccess Umleitung funktioniert
|
|
- ✅ SQLite-Datenbank-Pfad geklärt
|
|
- ✅ Composer install ausgeführt
|
|
- ✅ Migrationen ausgeführt (inkl. Hersteller-Feature)
|
|
- ✅ Admin-User erstellt
|
|
- ✅ Hersteller-Feature vollständig implementiert und deployed
|
|
|
|
## 🔄 Nächste Schritte
|
|
|
|
### Sofortige Aktionen
|
|
1. ✅ **DB_DATABASE Pfad geklärt** - Datenbank im Hauptverzeichnis
|
|
2. ✅ **Composer install** ausgeführt
|
|
3. ✅ **Migrationen** ausgeführt: `php artisan migrate --force`
|
|
4. ✅ **Admin-User** erstellt
|
|
5. ✅ **Anwendung getestet** - Hersteller-Feature funktioniert
|
|
6. ✅ **HTTPS-Sicherheit** für alle Hersteller-Forms implementiert
|
|
|
|
### Admin-User erstellen
|
|
```bash
|
|
php artisan tinker
|
|
```
|
|
```php
|
|
use App\Models\User;
|
|
User::create([
|
|
'name' => 'Admin',
|
|
'email' => 'admin@neonail.com',
|
|
'password' => bcrypt('ihr_passwort')
|
|
]);
|
|
```
|
|
|
|
## 📱 Anwendungs-Features
|
|
|
|
### User-Features
|
|
- **Meine Sammlung** - Eigene Lacke anzeigen/verwalten
|
|
- **Verfügbare Lacke** - Alle Lacke aus Hauptkatalog
|
|
- **Neuen Lack hinzufügen** - Erstellt Lack im Hauptkatalog + fügt zur eigenen Sammlung hinzu
|
|
- **Hersteller verwalten** - Hersteller erstellen, bearbeiten, löschen (für alle User)
|
|
- **Bild-Upload** - Handykamera-Unterstützung, automatische Optimierung
|
|
- **Suche** - Nach Name oder Nummer
|
|
|
|
### Admin-Features
|
|
- **Dashboard** - Übersicht über User, Lacke und Hersteller
|
|
- **User-Verwaltung** - User erstellen, bearbeiten, löschen
|
|
- **Nagellack-Verwaltung** - Alle Lacke verwalten
|
|
- **Hersteller-Verwaltung** - Alle Hersteller verwalten
|
|
- **Statistiken** - Anwendungs-Statistiken inkl. Hersteller
|
|
- **User-Sammlungen** - Sammlungen anderer User einsehen
|
|
|
|
## 🛠️ Wichtige Dateien
|
|
|
|
### Controllers
|
|
- `UserNailPolishController` - User-Sammlungen verwalten (erweitert um Hersteller)
|
|
- `NailPolishController` - Admin-Nagellack-Verwaltung
|
|
- `ManufacturerController` - Hersteller-Verwaltung für alle User
|
|
- `AdminController` - Admin-Dashboard und User-Verwaltung (erweitert um Hersteller-Statistiken)
|
|
- `LoginController` - Authentifizierung
|
|
|
|
### Views
|
|
- `user-nail-polishes/` - User-Sammlungs-Views (erweitert um Hersteller-Anzeige)
|
|
- `nail-polishes/` - Admin-Nagellack-Views (erweitert um Hersteller-Anzeige)
|
|
- `manufacturers/` - Hersteller-Verwaltungs-Views (index, create, edit, show)
|
|
- `admin/` - Admin-Interface-Views
|
|
- `auth/` - Login-Views
|
|
|
|
### Routes
|
|
```php
|
|
// User-Routes
|
|
/my-collection - Eigene Sammlung
|
|
/available - Verfügbare Lacke
|
|
/create-nail-polish - Neuen Lack erstellen
|
|
/add-to-collection/{id} - Lack zur Sammlung hinzufügen
|
|
/remove-from-collection/{id} - Lack aus Sammlung entfernen
|
|
|
|
// Hersteller-Routes (für alle User)
|
|
/manufacturers - Hersteller-Übersicht
|
|
/manufacturers/create - Neuen Hersteller erstellen
|
|
/manufacturers/{id} - Hersteller anzeigen
|
|
/manufacturers/{id}/edit - Hersteller bearbeiten
|
|
/manufacturers-search - AJAX-Suche nach Herstellern
|
|
|
|
// Admin-Routes
|
|
/admin/dashboard - Admin-Dashboard
|
|
/admin/users - User-Verwaltung
|
|
/nail-polishes - Nagellack-Verwaltung
|
|
/admin/statistics - Statistiken
|
|
```
|
|
|
|
## 🔒 Sicherheit
|
|
|
|
### Admin-Zugang
|
|
- **Email:** admin@neonail.com
|
|
- **Passwort:** Muss noch gesetzt werden
|
|
|
|
### Middleware
|
|
- `auth` - Authentifizierung erforderlich
|
|
- `admin` - Nur für admin@neonail.com
|
|
- `guest` - Nur für nicht-eingeloggte User
|
|
|
|
## 📊 Datenbank-Beziehungen
|
|
|
|
### Datenbank-Beziehungen
|
|
```php
|
|
// User Model
|
|
public function nailPolishes() {
|
|
return $this->belongsToMany(NailPolish::class, 'user_nail_polishes');
|
|
}
|
|
|
|
// Manufacturer Model
|
|
public function nailPolishes() {
|
|
return $this->hasMany(NailPolish::class);
|
|
}
|
|
|
|
// NailPolish Model
|
|
public function users() {
|
|
return $this->belongsToMany(User::class, 'user_nail_polishes');
|
|
}
|
|
|
|
public function manufacturer() {
|
|
return $this->belongsTo(Manufacturer::class);
|
|
}
|
|
```
|
|
|
|
### Pivot-Tabelle
|
|
```sql
|
|
user_nail_polishes (user_id, nail_polish_id, timestamps)
|
|
```
|
|
|
|
### Hersteller-Feature
|
|
- **Flexibilität:** Jeder User kann neue Hersteller erstellen
|
|
- **Eindeutigkeit:** Hersteller-Namen müssen eindeutig sein
|
|
- **Globale Verfügbarkeit:** Alle User können alle Hersteller nutzen
|
|
- **Automatische Erstellung:** Beim Nagellack-Erstellen falls nicht vorhanden
|
|
- **Referentielle Integrität:** Hersteller können nicht gelöscht werden, wenn Nagellacke zugeordnet sind
|
|
|
|
## 🎨 UI/UX Features
|
|
|
|
### Mobile-Optimierung
|
|
- Responsive Bootstrap 5 Design
|
|
- Touch-freundliche Buttons
|
|
- Handykamera-Integration (`capture="environment"`)
|
|
- Optimierte Bildgrößen (400x400px)
|
|
- Intelligente Hersteller-Auswahl mit JavaScript
|
|
|
|
### Design-Elemente
|
|
- Gradient-Hintergrund
|
|
- Glassmorphism-Effekte
|
|
- Font Awesome Icons
|
|
- Bootstrap Cards und Grid-System
|
|
|
|
## 🔧 Deployment-Scripts
|
|
|
|
### fix-permissions.sh
|
|
```bash
|
|
# Berechtigungen korrigieren
|
|
chmod -R 777 storage/
|
|
chmod -R 777 bootstrap/cache/
|
|
chmod 664 database.sqlite
|
|
chmod 644 .env
|
|
```
|
|
|
|
### deploy-manufacturer-feature.sh
|
|
```bash
|
|
# Hersteller-Feature Deployment
|
|
# - Migration-Reihenfolge korrigieren
|
|
# - Migrationen ausführen
|
|
# - Cache leeren
|
|
# - Autoload aktualisieren
|
|
# - Berechtigungen setzen
|
|
```
|
|
|
|
### setup-webspace.sh
|
|
```bash
|
|
# Vollständiges Setup
|
|
# - .env erstellen
|
|
# - Berechtigungen setzen
|
|
# - Composer install
|
|
# - Laravel Setup
|
|
```
|
|
|
|
### deploy-sqlite.sh
|
|
```bash
|
|
# SQLite-spezifisches Deployment
|
|
# - SQLite-Datenbank erstellen
|
|
# - Optimierte Einstellungen
|
|
```
|
|
|
|
## 🐛 Bekannte Probleme & Lösungen
|
|
|
|
### 1. "Permission denied" Fehler
|
|
**Lösung:** `chmod -R 777 storage/ bootstrap/cache/`
|
|
|
|
### 2. "APP_KEY" Fehler
|
|
**Lösung:** `php artisan key:generate` oder manueller Key
|
|
|
|
### 3. "Database connection failed"
|
|
**Lösung:** SQLite-Datei erstellen, Berechtigungen prüfen
|
|
|
|
### 4. "Class not found"
|
|
**Lösung:** `composer install` oder `composer dump-autoload`
|
|
|
|
### 5. "Images not displayed"
|
|
**Lösung:** `php artisan storage:link`
|
|
|
|
### 6. "no such table: manufacturers"
|
|
**Lösung:** Migrationen ausführen: `php artisan migrate --force`
|
|
|
|
### 7. "Migration-Reihenfolge Fehler"
|
|
**Lösung:** Migration `add_manufacturer_id_to_nail_polishes_table` nach `create_nail_polishes_table` verschieben
|
|
|
|
## 📞 Support-Informationen
|
|
|
|
### Logs
|
|
- `storage/logs/laravel.log` - Laravel-Logs
|
|
- `storage/logs/` - Weitere Logs
|
|
|
|
### Debug-Modus
|
|
```env
|
|
APP_DEBUG=true # Für Fehlerdiagnose
|
|
```
|
|
|
|
### Test-Dateien
|
|
- `test.php` - PHP-Diagnose
|
|
- `laravel-test.php` - Laravel-spezifische Diagnose
|
|
|
|
## 🎯 Projekt-Ziele
|
|
|
|
### Erreicht ✅
|
|
- Kollaborative Datenbank
|
|
- Mobile-Optimierung
|
|
- Admin-Interface
|
|
- Bild-Upload
|
|
- Suchfunktion
|
|
- SQLite-Deployment
|
|
- Hersteller-Verwaltung für alle User
|
|
- HTTPS-Sicherheit für alle Forms
|
|
- Intelligente Hersteller-Auswahl
|
|
|
|
### Nächste Schritte 🚀
|
|
1. ✅ Webspace-Deployment abgeschlossen
|
|
2. ✅ Admin-User erstellt
|
|
3. ✅ Anwendung getestet (inkl. Hersteller-Feature)
|
|
4. User-Feedback sammeln
|
|
5. Weitere Features entwickeln
|
|
|
|
---
|
|
|
|
**Projekt-Status:** 100% abgeschlossen, Hersteller-Feature implementiert
|
|
**Letzte Aktion:** Hersteller-Feature vollständig deployed und getestet
|
|
**Nächste Aktion:** User-Feedback sammeln und weitere Features entwickeln
|