‫-: Willkommen zurück zum letzten Video des Abschnitts.
‫Und in diesem Abschnitt haben wir unser Projekt,
‫sowohl die API als auch die gerenderte Website,
‫zumindest vorerst abgeschlossen.
‫Nochmals herzlichen Glückwunsch, dass Sie diesen Punkt erreicht haben und über
‫30 Stunden Video gesessen haben und immer auf meine
‫Stimme gehört haben.
‫Wie auch immer, in diesem letzten
‫Video wollte ich schnell einige Themen ansprechen,
‫die wir der API und der Website hätten hinzufügen können,
‫und sie Ihnen im Grunde als Herausforderungen überlassen, wenn
‫Sie möchten.
‫Wir hätten unserem Projekt also etwas mehr
‫Geschäftslogik hinzufügen können, beispielsweise durch eine
‫Einschränkung, dass Benutzer nur eine Tour bewerten können, die sie
‫tatsächlich gebucht haben.
‫Und das würde sehr viel Sinn machen, oder?
‫Deshalb möchte ich, dass Sie das selbst ausprobieren,
‫wenn Sie Lust dazu haben.
‫Nun, diese Herausforderungen werde ich nicht selbst lösen,
‫es sei denn, es besteht wirklich eine große Nachfrage nach einer davon.
‫Und ich habe
‫diese komplizierteren Herausforderungen den Studenten
‫in meinen anderen Kursen tatsächlich selbst überlassen, und
‫ich habe in vielen Fällen wirklich einige kreative Ergebnisse gesehen.
‫Daher hoffe ich, dass Sie auch einige davon ausprobieren.
‫Als nächstes könnten
‫Sie auch einige verschachtelte Buchungsrouten implementieren, beispielsweise
‫alle Buchungen für eine bestimmte Tour
‫und alle Buchungen für einen bestimmten
‫Benutzer, also basierend auf IDs.
‫Außerdem könnten Sie die Tourdaten dramatisch verbessern, und was
‫ich damit meine ist, dass Sie jedem der Daten
‫ein Teilnehmer- und ein Ausverkaufsfeld hinzufügen könnten.
‫Und das Datum wird dann
‫zu einer Art Instanz der Tour.
‫Wenn ein Benutzer dann tatsächlich eine Tour
‫bucht, muss er einen der verfügbaren Termine auswählen,
‫und Ihre Buchung an
‫einem der Termine erhöht dann die
‫Anzahl der Teilnehmer an dem Termin, bis er
‫ausgebucht ist, also im Grunde, wenn die Teilnehmerzahl größer
‫ist als die maximale Gruppengröße.
‫Wenn der Benutzer nun endlich eine bestimmte
‫Tour zu einem bestimmten Datum buchen möchte,
‫müssen Sie natürlich überprüfen, ob die Tour an diesem ausgewählten
‫Datum noch verfügbar ist.
‫Okay?
‫Das ist eigentlich eine ziemlich anspruchsvolle Herausforderung, aber
‫es macht auch wirklich Spaß, diese
‫zu implementieren, und würde diesem Projekt wirklich eine
‫bedeutende Geschäftslogik hinzufügen.
‫Schließlich könnten Sie auch
‫einige der erweiterten Authentifizierungsfunktionen implementieren,
‫über die wir bereits im Abschnitt
‫Sicherheit gesprochen haben.
‫Sie könnten beispielsweise eine E-Mail-Adresse eines Benutzers im Grunde
‫bestätigen, indem Sie ihm eine E-Mail mit einem
‫Link senden, den
‫er anklicken muss, und
‫erst nach dem Klicken ist der Benutzer dann wirklich in
‫der Anwendung registriert und kann beispielsweise Touren kaufen.
‫Sie können Benutzer auch
‫mit sogenannten Refresh-Tokens angemeldet halten.
‫Und das ist auch wieder etwas kompliziert zu
‫implementieren, aber wenn man googelt, wie es funktioniert,
‫dann findet man sicher eine gute
‫Lösung oder man kann sich auch selbst eine einfallen lassen.
‫Schließlich könnten Sie auch eine Zwei-Faktor-Authentifizierung implementieren, aber
‫diese geht noch einen Schritt weiter.
‫Wenn sich ein Benutzer also
‫im Grunde anmeldet, erhält er so etwas wie
‫eine Textnachricht auf seinem Telefon mit einem Code,
‫den er in die
‫Anwendung eingeben muss, um nach diesem zweiten Schritt authentifiziert zu werden.
‫Das sind also einige nette Herausforderungen,
‫die Sie wirklich auf der API-Site implementieren könnten, im
‫Grunde des Projekts.
‫Aber es gibt auch Dinge, die Sie auf der Website tun können.
‫Sie könnten beispielsweise das Anmeldeformular implementieren, das
‫dem Anmeldeformular sehr ähnlich sein sollte.
‫Ich habe das also nicht wirklich gemacht, weil es
‫dem Login-Formular
‫so ähnlich ist, und ich wollte damit keine Zeit verschwenden.
‫Aber natürlich können Sie auch weitermachen
‫und das implementieren.
‫Eine weitere nette Sache, die Sie auf der Website machen
‫können, ist, dass Sie einem Benutzer auf
‫der Tourdetailseite erlauben
‫können, eine Bewertung direkt auf der Website
‫hinzuzufügen, jedoch nur, wenn der Benutzer diese Tour mitgemacht hat.
‫Sie müssten also prüfen, ob der aktuell eingeloggte
‫Benutzer die aktuelle Tour tatsächlich gebucht
‫hat und auch die Zeit der Tour bereits abgelaufen ist.
‫Und wenn ja, können Sie der Seite ein
‫Formular hinzufügen, auf dem der
‫Benutzer eine neue Bewertung hinzufügen kann, beispielsweise mithilfe unserer Bewertungs-API.
‫Oder Sie können den gesamten
‫Buchungsbereich auf derselben Tourdetailseite
‫ausblenden, wenn der aktuelle Benutzer die
‫Tour gebucht hat.
‫Okay.
‫Dies würde dann verhindern, dass derselbe Benutzer
‫dieselbe Tour zweimal bucht.
‫Und da Sie dies bereits im Frontend
‫tun, sollten Sie in Ihrem
‫Modell auch Doppelbuchungen im Backend vermeiden.
‫Das wird tatsächlich sehr
‫ähnlich sein, um doppelte Bewertungen desselben Benutzers zu verhindern.
‫Okay.
‫Außerdem könnten
‫Sie eine sehr schöne Like-Tour-Funktionalität implementieren.
‫Wenn Sie also so etwas wie eine
‫Like- oder Herz-Schaltfläche auf der Tour haben
‫und dann, wenn der Benutzer
‫darauf klickt, wird es zu seinen Favoriten hinzugefügt.
‫Und dann
‫könnten Sie auf der Website eine Favoritenseite oder nur ein Favoritenfenster haben, in
‫dem der Benutzer alle seine Lieblingstouren sehen kann.
‫Das ist also nicht wirklich schwer, aber
‫ich denke, es macht sehr viel Spaß, es umzusetzen.
‫Als nächstes könnten Sie auf der
‫Benutzerkontoseite die Seite Meine Bewertungen implementieren,
‫die bereits einen Link enthält,
‫und auf dieser Seite könnte der Benutzer
‫dann alle seine eigenen Bewertungen sehen und möglicherweise auch bearbeiten und löschen.
‫Wenn Sie React kennen, dann
‫wäre dies wirklich eine großartige
‫Möglichkeit, die Natours-API zu nutzen und gleichzeitig Ihre React-Fähigkeiten
‫zu trainieren.
‫Und sobald Sie dies mit
‫React tun, können Sie mit React oder
‫ähnlichem tatsächlich die gesamte Seite als
‫Einzelseitenanwendung neu erstellen.
‫Also wie Angular oder Vue würde das auch funktionieren.
‫Rechts.
‫Das wäre wirklich toll, wenn du das machen würdest,
‫und ich würde es wirklich sehr gerne sehen, wenn es umgesetzt würde.
‫Schließlich könnten Sie für die
‫Administratoren die Verwaltungsseiten implementieren, auf
‫denen die Administratoren dann alle Ressourcen erstellen,
‫lesen, aktualisieren und löschen
‫können, also alle Touren, Benutzer, Bewertungen und Buchungen.
‫Auch hier wäre React vielleicht gut geeignet,
‫oder wenn nicht, dann würde
‫auch nur normales Javascript im Frontend
‫wirklich gut funktionieren, zum Beispiel alle diese Ressourcen mit Ajax-Aufrufen aktualisieren.
‫Es gibt also wirklich eine Menge Dinge, die Sie
‫implementieren könnten, um unser Projekt und unsere
‫Website noch weiter zu verbessern.
‫Rechts?
‫Und ich bin sicher, Sie könnten
‫sich hier sogar noch einige andere Sachen einfallen lassen.
‫Es wäre also noch einmal wirklich
‫großartig, einige dieser Funktionen tatsächlich von Ihnen implementiert zu sehen.
‫Und wenn Sie einen oder sogar mehrere davon
‫machen, teilen Sie Ihr Ergebnis einfach im
‫Abschnitt Q&A des Kurses mit.
‫Wie auch immer, das war es für dieses Video und für
‫diesen Abschnitt und auch fast für diesen Kurs.
‫Noch einmal eine großartige Arbeit, und jetzt als nächstes
‫müssen Sie nur noch die Anwendung für
‫die Bereitstellung vorbereiten und
‫sie dann tatsächlich auf einem Live-Produktionsserver bereitstellen, um unser Projekt wirklich
‫mit der Welt zu teilen.