﻿1
00:00:01,200 --> 00:00:04,530
‫-: Willkommen zurück zum letzten Video des Abschnitts.

2
00:00:04,530 --> 00:00:07,950
‫Und in diesem Abschnitt haben wir unser Projekt,

3
00:00:07,950 --> 00:00:11,350
‫sowohl die API als auch die gerenderte Website,

4
00:00:11,350 --> 00:00:12,910
‫zumindest vorerst abgeschlossen.

5
00:00:12,910 --> 00:00:17,180
‫Nochmals herzlichen Glückwunsch, dass Sie diesen Punkt erreicht haben und über

6
00:00:17,180 --> 00:00:20,970
‫30 Stunden Video gesessen haben und immer auf meine

7
00:00:20,970 --> 00:00:22,573
‫Stimme gehört haben.

8
00:00:23,670 --> 00:00:25,840
‫Wie auch immer, in diesem letzten

9
00:00:25,840 --> 00:00:28,260
‫Video wollte ich schnell einige Themen ansprechen,

10
00:00:28,260 --> 00:00:31,650
‫die wir der API und der Website hätten hinzufügen können,

11
00:00:31,650 --> 00:00:34,810
‫und sie Ihnen im Grunde als Herausforderungen überlassen, wenn

12
00:00:34,810 --> 00:00:35,863
‫Sie möchten.

13
00:00:37,350 --> 00:00:40,160
‫Wir hätten unserem Projekt also etwas mehr

14
00:00:40,160 --> 00:00:42,500
‫Geschäftslogik hinzufügen können, beispielsweise durch eine

15
00:00:42,500 --> 00:00:46,310
‫Einschränkung, dass Benutzer nur eine Tour bewerten können, die sie

16
00:00:46,310 --> 00:00:47,910
‫tatsächlich gebucht haben.

17
00:00:47,910 --> 00:00:50,940
‫Und das würde sehr viel Sinn machen, oder?

18
00:00:50,940 --> 00:00:53,510
‫Deshalb möchte ich, dass Sie das selbst ausprobieren,

19
00:00:53,510 --> 00:00:55,320
‫wenn Sie Lust dazu haben.

20
00:00:55,320 --> 00:00:58,450
‫Nun, diese Herausforderungen werde ich nicht selbst lösen,

21
00:00:58,450 --> 00:01:02,620
‫es sei denn, es besteht wirklich eine große Nachfrage nach einer davon.

22
00:01:02,620 --> 00:01:04,190
‫Und ich habe

23
00:01:04,190 --> 00:01:06,650
‫diese komplizierteren Herausforderungen den Studenten

24
00:01:06,650 --> 00:01:09,950
‫in meinen anderen Kursen tatsächlich selbst überlassen, und

25
00:01:09,950 --> 00:01:14,150
‫ich habe in vielen Fällen wirklich einige kreative Ergebnisse gesehen.

26
00:01:14,150 --> 00:01:17,160
‫Daher hoffe ich, dass Sie auch einige davon ausprobieren.

27
00:01:17,160 --> 00:01:19,170
‫Als nächstes könnten

28
00:01:19,170 --> 00:01:22,180
‫Sie auch einige verschachtelte Buchungsrouten implementieren, beispielsweise

29
00:01:22,180 --> 00:01:25,130
‫alle Buchungen für eine bestimmte Tour

30
00:01:25,130 --> 00:01:27,940
‫und alle Buchungen für einen bestimmten

31
00:01:27,940 --> 00:01:30,080
‫Benutzer, also basierend auf IDs.

32
00:01:30,080 --> 00:01:33,690
‫Außerdem könnten Sie die Tourdaten dramatisch verbessern, und was

33
00:01:33,690 --> 00:01:37,050
‫ich damit meine ist, dass Sie jedem der Daten

34
00:01:37,050 --> 00:01:40,230
‫ein Teilnehmer- und ein Ausverkaufsfeld hinzufügen könnten.

35
00:01:40,230 --> 00:01:42,420
‫Und das Datum wird dann

36
00:01:42,420 --> 00:01:44,770
‫zu einer Art Instanz der Tour.

37
00:01:44,770 --> 00:01:47,300
‫Wenn ein Benutzer dann tatsächlich eine Tour

38
00:01:47,300 --> 00:01:49,970
‫bucht, muss er einen der verfügbaren Termine auswählen,

39
00:01:49,970 --> 00:01:51,860
‫und Ihre Buchung an

40
00:01:51,860 --> 00:01:54,070
‫einem der Termine erhöht dann die

41
00:01:54,070 --> 00:01:56,910
‫Anzahl der Teilnehmer an dem Termin, bis er

42
00:01:56,910 --> 00:01:59,950
‫ausgebucht ist, also im Grunde, wenn die Teilnehmerzahl größer

43
00:01:59,950 --> 00:02:02,000
‫ist als die maximale Gruppengröße.

44
00:02:02,000 --> 00:02:04,300
‫Wenn der Benutzer nun endlich eine bestimmte

45
00:02:04,300 --> 00:02:06,760
‫Tour zu einem bestimmten Datum buchen möchte,

46
00:02:06,760 --> 00:02:09,800
‫müssen Sie natürlich überprüfen, ob die Tour an diesem ausgewählten

47
00:02:09,800 --> 00:02:11,450
‫Datum noch verfügbar ist.

48
00:02:11,450 --> 00:02:12,290
‫Okay?

49
00:02:12,290 --> 00:02:15,480
‫Das ist eigentlich eine ziemlich anspruchsvolle Herausforderung, aber

50
00:02:15,480 --> 00:02:18,180
‫es macht auch wirklich Spaß, diese

51
00:02:18,180 --> 00:02:21,480
‫zu implementieren, und würde diesem Projekt wirklich eine

52
00:02:21,480 --> 00:02:22,883
‫bedeutende Geschäftslogik hinzufügen.

53
00:02:24,100 --> 00:02:26,040
‫Schließlich könnten Sie auch

54
00:02:26,040 --> 00:02:28,140
‫einige der erweiterten Authentifizierungsfunktionen implementieren,

55
00:02:28,140 --> 00:02:30,480
‫über die wir bereits im Abschnitt

56
00:02:30,480 --> 00:02:32,150
‫Sicherheit gesprochen haben.

57
00:02:32,150 --> 00:02:35,480
‫Sie könnten beispielsweise eine E-Mail-Adresse eines Benutzers im Grunde

58
00:02:35,480 --> 00:02:38,360
‫bestätigen, indem Sie ihm eine E-Mail mit einem

59
00:02:38,360 --> 00:02:39,570
‫Link senden, den

60
00:02:39,570 --> 00:02:41,160
‫er anklicken muss, und

61
00:02:41,160 --> 00:02:44,540
‫erst nach dem Klicken ist der Benutzer dann wirklich in

62
00:02:44,540 --> 00:02:47,450
‫der Anwendung registriert und kann beispielsweise Touren kaufen.

63
00:02:47,450 --> 00:02:49,690
‫Sie können Benutzer auch

64
00:02:49,690 --> 00:02:52,400
‫mit sogenannten Refresh-Tokens angemeldet halten.

65
00:02:52,400 --> 00:02:55,130
‫Und das ist auch wieder etwas kompliziert zu

66
00:02:55,130 --> 00:02:57,900
‫implementieren, aber wenn man googelt, wie es funktioniert,

67
00:02:57,900 --> 00:03:00,330
‫dann findet man sicher eine gute

68
00:03:00,330 --> 00:03:03,770
‫Lösung oder man kann sich auch selbst eine einfallen lassen.

69
00:03:03,770 --> 00:03:07,070
‫Schließlich könnten Sie auch eine Zwei-Faktor-Authentifizierung implementieren, aber

70
00:03:07,070 --> 00:03:10,360
‫diese geht noch einen Schritt weiter.

71
00:03:10,360 --> 00:03:12,360
‫Wenn sich ein Benutzer also

72
00:03:12,360 --> 00:03:15,200
‫im Grunde anmeldet, erhält er so etwas wie

73
00:03:15,200 --> 00:03:17,920
‫eine Textnachricht auf seinem Telefon mit einem Code,

74
00:03:17,920 --> 00:03:19,670
‫den er in die

75
00:03:19,670 --> 00:03:23,370
‫Anwendung eingeben muss, um nach diesem zweiten Schritt authentifiziert zu werden.

76
00:03:23,370 --> 00:03:25,210
‫Das sind also einige nette Herausforderungen,

77
00:03:25,210 --> 00:03:28,140
‫die Sie wirklich auf der API-Site implementieren könnten, im

78
00:03:28,140 --> 00:03:29,463
‫Grunde des Projekts.

79
00:03:30,400 --> 00:03:34,000
‫Aber es gibt auch Dinge, die Sie auf der Website tun können.

80
00:03:34,000 --> 00:03:37,270
‫Sie könnten beispielsweise das Anmeldeformular implementieren, das

81
00:03:37,270 --> 00:03:40,380
‫dem Anmeldeformular sehr ähnlich sein sollte.

82
00:03:40,380 --> 00:03:43,720
‫Ich habe das also nicht wirklich gemacht, weil es

83
00:03:43,720 --> 00:03:44,790
‫dem Login-Formular

84
00:03:44,790 --> 00:03:48,540
‫so ähnlich ist, und ich wollte damit keine Zeit verschwenden.

85
00:03:48,540 --> 00:03:50,930
‫Aber natürlich können Sie auch weitermachen

86
00:03:50,930 --> 00:03:52,430
‫und das implementieren.

87
00:03:52,430 --> 00:03:55,680
‫Eine weitere nette Sache, die Sie auf der Website machen

88
00:03:55,680 --> 00:03:57,980
‫können, ist, dass Sie einem Benutzer auf

89
00:03:57,980 --> 00:03:59,340
‫der Tourdetailseite erlauben

90
00:03:59,340 --> 00:04:01,890
‫können, eine Bewertung direkt auf der Website

91
00:04:01,890 --> 00:04:05,010
‫hinzuzufügen, jedoch nur, wenn der Benutzer diese Tour mitgemacht hat.

92
00:04:05,010 --> 00:04:07,760
‫Sie müssten also prüfen, ob der aktuell eingeloggte

93
00:04:07,760 --> 00:04:10,270
‫Benutzer die aktuelle Tour tatsächlich gebucht

94
00:04:10,270 --> 00:04:13,690
‫hat und auch die Zeit der Tour bereits abgelaufen ist.

95
00:04:13,690 --> 00:04:16,650
‫Und wenn ja, können Sie der Seite ein

96
00:04:16,650 --> 00:04:18,690
‫Formular hinzufügen, auf dem der

97
00:04:18,690 --> 00:04:21,920
‫Benutzer eine neue Bewertung hinzufügen kann, beispielsweise mithilfe unserer Bewertungs-API.

98
00:04:21,920 --> 00:04:24,600
‫Oder Sie können den gesamten

99
00:04:24,600 --> 00:04:26,990
‫Buchungsbereich auf derselben Tourdetailseite

100
00:04:26,990 --> 00:04:30,480
‫ausblenden, wenn der aktuelle Benutzer die

101
00:04:30,480 --> 00:04:32,620
‫Tour gebucht hat.

102
00:04:32,620 --> 00:04:33,810
‫Okay.

103
00:04:33,810 --> 00:04:36,250
‫Dies würde dann verhindern, dass derselbe Benutzer

104
00:04:36,250 --> 00:04:37,850
‫dieselbe Tour zweimal bucht.

105
00:04:37,850 --> 00:04:40,990
‫Und da Sie dies bereits im Frontend

106
00:04:40,990 --> 00:04:43,350
‫tun, sollten Sie in Ihrem

107
00:04:43,350 --> 00:04:45,981
‫Modell auch Doppelbuchungen im Backend vermeiden.

108
00:04:45,981 --> 00:04:47,660
‫Das wird tatsächlich sehr

109
00:04:47,660 --> 00:04:51,380
‫ähnlich sein, um doppelte Bewertungen desselben Benutzers zu verhindern.

110
00:04:51,380 --> 00:04:52,860
‫Okay.

111
00:04:52,860 --> 00:04:54,160
‫Außerdem könnten

112
00:04:54,160 --> 00:04:57,250
‫Sie eine sehr schöne Like-Tour-Funktionalität implementieren.

113
00:04:57,250 --> 00:04:59,590
‫Wenn Sie also so etwas wie eine

114
00:04:59,590 --> 00:05:01,720
‫Like- oder Herz-Schaltfläche auf der Tour haben

115
00:05:01,720 --> 00:05:03,620
‫und dann, wenn der Benutzer

116
00:05:03,620 --> 00:05:06,120
‫darauf klickt, wird es zu seinen Favoriten hinzugefügt.

117
00:05:06,120 --> 00:05:07,340
‫Und dann

118
00:05:07,340 --> 00:05:11,940
‫könnten Sie auf der Website eine Favoritenseite oder nur ein Favoritenfenster haben, in

119
00:05:11,940 --> 00:05:14,860
‫dem der Benutzer alle seine Lieblingstouren sehen kann.

120
00:05:14,860 --> 00:05:17,210
‫Das ist also nicht wirklich schwer, aber

121
00:05:17,210 --> 00:05:19,713
‫ich denke, es macht sehr viel Spaß, es umzusetzen.

122
00:05:20,900 --> 00:05:23,230
‫Als nächstes könnten Sie auf der

123
00:05:23,230 --> 00:05:25,610
‫Benutzerkontoseite die Seite Meine Bewertungen implementieren,

124
00:05:25,610 --> 00:05:27,870
‫die bereits einen Link enthält,

125
00:05:27,870 --> 00:05:30,410
‫und auf dieser Seite könnte der Benutzer

126
00:05:30,410 --> 00:05:34,730
‫dann alle seine eigenen Bewertungen sehen und möglicherweise auch bearbeiten und löschen.

127
00:05:34,730 --> 00:05:36,660
‫Wenn Sie React kennen, dann

128
00:05:36,660 --> 00:05:38,900
‫wäre dies wirklich eine großartige

129
00:05:38,900 --> 00:05:42,580
‫Möglichkeit, die Natours-API zu nutzen und gleichzeitig Ihre React-Fähigkeiten

130
00:05:42,580 --> 00:05:43,940
‫zu trainieren.

131
00:05:43,940 --> 00:05:46,260
‫Und sobald Sie dies mit

132
00:05:46,260 --> 00:05:49,140
‫React tun, können Sie mit React oder

133
00:05:49,140 --> 00:05:51,790
‫ähnlichem tatsächlich die gesamte Seite als

134
00:05:51,790 --> 00:05:53,290
‫Einzelseitenanwendung neu erstellen.

135
00:05:53,290 --> 00:05:57,010
‫Also wie Angular oder Vue würde das auch funktionieren.

136
00:05:57,010 --> 00:05:57,843
‫Rechts.

137
00:05:57,843 --> 00:06:00,626
‫Das wäre wirklich toll, wenn du das machen würdest,

138
00:06:00,626 --> 00:06:03,933
‫und ich würde es wirklich sehr gerne sehen, wenn es umgesetzt würde.

139
00:06:04,770 --> 00:06:07,310
‫Schließlich könnten Sie für die

140
00:06:07,310 --> 00:06:09,800
‫Administratoren die Verwaltungsseiten implementieren, auf

141
00:06:09,800 --> 00:06:13,180
‫denen die Administratoren dann alle Ressourcen erstellen,

142
00:06:13,180 --> 00:06:15,300
‫lesen, aktualisieren und löschen

143
00:06:15,300 --> 00:06:18,923
‫können, also alle Touren, Benutzer, Bewertungen und Buchungen.

144
00:06:19,860 --> 00:06:23,130
‫Auch hier wäre React vielleicht gut geeignet,

145
00:06:23,130 --> 00:06:25,770
‫oder wenn nicht, dann würde

146
00:06:25,770 --> 00:06:28,480
‫auch nur normales Javascript im Frontend

147
00:06:28,480 --> 00:06:33,270
‫wirklich gut funktionieren, zum Beispiel alle diese Ressourcen mit Ajax-Aufrufen aktualisieren.

148
00:06:33,270 --> 00:06:36,530
‫Es gibt also wirklich eine Menge Dinge, die Sie

149
00:06:36,530 --> 00:06:39,070
‫implementieren könnten, um unser Projekt und unsere

150
00:06:39,070 --> 00:06:41,030
‫Website noch weiter zu verbessern.

151
00:06:41,030 --> 00:06:42,180
‫Rechts?

152
00:06:42,180 --> 00:06:43,860
‫Und ich bin sicher, Sie könnten

153
00:06:43,860 --> 00:06:46,200
‫sich hier sogar noch einige andere Sachen einfallen lassen.

154
00:06:46,200 --> 00:06:48,450
‫Es wäre also noch einmal wirklich

155
00:06:48,450 --> 00:06:52,120
‫großartig, einige dieser Funktionen tatsächlich von Ihnen implementiert zu sehen.

156
00:06:52,120 --> 00:06:54,910
‫Und wenn Sie einen oder sogar mehrere davon

157
00:06:54,910 --> 00:06:57,240
‫machen, teilen Sie Ihr Ergebnis einfach im

158
00:06:57,240 --> 00:06:59,153
‫Abschnitt Q&A des Kurses mit.

159
00:07:00,120 --> 00:07:04,190
‫Wie auch immer, das war es für dieses Video und für

160
00:07:04,190 --> 00:07:07,260
‫diesen Abschnitt und auch fast für diesen Kurs.

161
00:07:07,260 --> 00:07:10,750
‫Noch einmal eine großartige Arbeit, und jetzt als nächstes

162
00:07:10,750 --> 00:07:13,620
‫müssen Sie nur noch die Anwendung für

163
00:07:13,620 --> 00:07:15,460
‫die Bereitstellung vorbereiten und

164
00:07:15,460 --> 00:07:19,500
‫sie dann tatsächlich auf einem Live-Produktionsserver bereitstellen, um unser Projekt wirklich

165
00:07:19,500 --> 00:07:21,673
‫mit der Welt zu teilen.

