Die Rezeptsammlung ist ein Tool zum Verwalten und Teilen von Koch- und Backrezepten. Eingeloggte Nutzer können Rezepte mit Titel, Beschreibung, Kategorie, Zeitaufwand, Portionen, Zutatenliste und Zubereitung erstellen. Der Verfasser eines Rezepts kann dieses bearbeiten und löschen. Jeder eingeloggte Nutzer kann Rezepte kommentieren. Alle Nutzer und Gäste der Seite können nach Rezepten suchen, nach Kategorien filtern und Rezepte als PDF herunterladen.
Zielsetzung
Die Rezeptsammlung als Tool, das lokal oder auf dem eigenen Server gehostet werden kann, um Rezepte mit Freunden und Familie auszutauschen.
Zusammenfassung aller Features
- Rezepte erstellen, bearbeiten und löschen
- Rezeptbild hochladen
- Rezepte kommentieren
- Rezepte suchen
- Nach Kategorien filtern
- Kategorien erstellen
- Rezept als PDF herunterladen
- Nutzer Authentifizierung / Login-System
-
Die zip-Datei entpacken und im htdocs Verzeichnis von XAMPP ablegen
-
XAMPP starten und in PHPmyAdmin eine leere Datenbank mit dem Namen recipe_collection anlegen
-
Das Projekt in einem beliebigem Code-Editor öffnen
-
Ein Terminal im Projektverzeichnis starten und den Befehl
php artisan serve
ausführen -
Im Browser die laufende App unter http://127.0.0.1:8000/init öffnen
Wichtig! Beim ersten Starten der App muss /init aufgerufen werden, um die Datenbanktabellen zu erstellen und mit Beispieldaten zu befüllen. Zusätzlich wird der Storage-Ordner der App neu verlinkt.
Hinweis: Die beiligende recipe_collection.sql Datei muss nicht verwendet werden!
Nun sollte die App unter http://127.0.0.1:8000 laufen und einige Beispielrezepte angezeigt werden.
PHP Framework: Laravel 7
Datenbank: MySQL
Styles: Bootstrap
Packages
- DOMPDF zum Erstellen von PDF Dateien aus einem HTML Dokument
- Laravel UI für Nutzer-Authentifizierung und Frontend Scaffolding
Die Daten der Anwendung werden in einer MySQL Datenbank gespeichert. Die Tabellen werden mit den Migrationsdateien von Laravel initialisiert. CRUD Vorgänge werden mithilfe von Eloquent durchgeführt.
Aufbau
Die Datenbank 'recipe_collection' besteht aus den sieben Tabellen Rezepte, Kategorien, Zutaten, Zutatenliste, Nutzer, Einheiten und Kommentare.
Enthält alle Controller die zur Verwaltung von User-Login und Registrierung benötigt werden. Sie werden vom Laravel/ui Package generiert.
Enthält die Funktionen index()
(Anzeigen aller Kategorien), create()
(Anzeigen des Formulars zum Erstellen einer neuen Kategorie) und store()
(Erstellen einer Kategorie aus den Angaben des Nutzers, sofern nicht bereits eine Kategorie mit diesem Namen existiert).
Der Controller besitzt eine store()
Methode die durch die Beziehung zum Recipe Model einen Kommentar mit den User Daten erstellt. Die validatedData()
Methode überprüft, ob der Nutzer einen Namen für die Kategore eingegeben hat.
Er zeigt das Dashboard des eingeloggten Nutzers an und verweist auf die Middleware zur Authentifizierung.
Enthält die Funktion index()
zum Anzeigen aller Rezepte bzw. Rezepte mit einer bestimmten Kategorie. Die create()
Methode verweist auf das Formular zum Erstellen eines neuen Rezepts. Mit store()
wird mit einer Transaktion ein neues Rezept in Abhängigkeit der Zutatenliste erstellt. Die show()
Methode zeigt die Detailansicht eines Rezepts an. update()
speichert die Änderungen an einem Rezept. destroy()
löscht ein Rezept aus der Datenbank. Die beiden Funktionen validateData()
und validatedIngredients()
validieren jeweils die Rezeptangaben und die Zutatenliste. saveIngredientlist()
erstellt die Zuatenliste in Abhängikeit zum Recipe Model. storeImage()
speicher ein Rezeptbild im Storage der App. downloadPDF()
wandelt das HTML in ein PDF um und startet einen Download.
Die Klassen Category, Comment, Ingredient, Ingriedientlist, Recipe, Unit und User legen jeweils die Beziehung zwischen den Models fest.
Enthält CSS, JavaScript und Favicons. Im storage/uploads Verzeichnis werden die hochgeladenen Rezeptbilder gespeichert.
In diesem Verzeichnis liegen alle Bladetemplates. Die Datei template/app.blade.php enthält das Grundgerüst, welches von den anderen Templates verwendet wird.
Diese Datei enthält alle Routen der App mit ihren jeweiligen Funktionen