﻿1
00:00:01,200 --> 00:00:04,530
‫-: Bem-vindo de volta ao último vídeo da seção.

2
00:00:04,530 --> 00:00:07,950
‫E nesta seção nós meio que finalizamos nosso projeto,

3
00:00:07,950 --> 00:00:11,350
‫tanto a API quanto o site renderizado, pelo

4
00:00:11,350 --> 00:00:12,910
‫menos por enquanto.

5
00:00:12,910 --> 00:00:17,180
‫Então, mais uma vez, parabéns por chegar a este ponto e por

6
00:00:17,180 --> 00:00:20,970
‫ficar sentado por mais de 30 horas de vídeo, sempre

7
00:00:20,970 --> 00:00:22,573
‫ouvindo minha voz.

8
00:00:23,670 --> 00:00:25,840
‫De qualquer forma, neste último

9
00:00:25,840 --> 00:00:28,260
‫vídeo, eu queria abordar rapidamente alguns

10
00:00:28,260 --> 00:00:31,650
‫tópicos que poderíamos ter adicionado à API e ao

11
00:00:31,650 --> 00:00:34,810
‫site, e basicamente deixá-los como desafios para você,

12
00:00:34,810 --> 00:00:35,863
‫se quiser.

13
00:00:37,350 --> 00:00:40,160
‫Portanto, poderíamos ter adicionado um pouco mais de

14
00:00:40,160 --> 00:00:42,500
‫lógica de negócios ao nosso projeto, por

15
00:00:42,500 --> 00:00:46,310
‫exemplo, adicionando uma restrição de que os usuários só podem revisar um

16
00:00:46,310 --> 00:00:47,910
‫tour que realmente reservaram.

17
00:00:47,910 --> 00:00:50,940
‫E isso faria muito sentido, certo?

18
00:00:50,940 --> 00:00:53,510
‫Então, eu quero que você experimente por

19
00:00:53,510 --> 00:00:55,320
‫conta própria, se quiser.

20
00:00:55,320 --> 00:00:58,450
‫Agora, esses desafios eu não vou resolver

21
00:00:58,450 --> 00:01:02,620
‫sozinho, a menos que realmente haja muita demanda para um deles.

22
00:01:02,620 --> 00:01:04,190
‫E, na verdade,

23
00:01:04,190 --> 00:01:06,650
‫deixei esse tipo de desafio mais complicado

24
00:01:06,650 --> 00:01:09,950
‫para os alunos fazerem por conta própria em meus

25
00:01:09,950 --> 00:01:14,150
‫outros cursos, e realmente vi alguns resultados criativos em muitos casos.

26
00:01:14,150 --> 00:01:17,160
‫Espero que você também experimente alguns deles.

27
00:01:17,160 --> 00:01:19,170
‫Agora, de qualquer maneira, a

28
00:01:19,170 --> 00:01:22,180
‫seguir, você também pode implementar algumas rotas de reserva

29
00:01:22,180 --> 00:01:25,130
‫aninhadas, por exemplo, obter todas as reservas para um

30
00:01:25,130 --> 00:01:27,940
‫determinado passeio e obter todas as reservas para um

31
00:01:27,940 --> 00:01:30,080
‫determinado usuário, com base em ids.

32
00:01:30,080 --> 00:01:33,690
‫Além disso, você poderia melhorar drasticamente as datas da turnê, e o que

33
00:01:33,690 --> 00:01:37,050
‫quero dizer com isso é que você poderia adicionar um campo de

34
00:01:37,050 --> 00:01:40,230
‫participantes e um campo soldOut a cada uma das datas.

35
00:01:40,230 --> 00:01:42,420
‫E a data então se

36
00:01:42,420 --> 00:01:44,770
‫torna uma espécie de exemplo da turnê.

37
00:01:44,770 --> 00:01:47,300
‫Então, quando um usuário realmente reserva um

38
00:01:47,300 --> 00:01:49,970
‫passeio, ele precisa selecionar uma das datas disponíveis

39
00:01:49,970 --> 00:01:51,860
‫e, em seguida, sua

40
00:01:51,860 --> 00:01:54,070
‫reserva em uma das datas aumentará

41
00:01:54,070 --> 00:01:56,910
‫o número de participantes na data até que

42
00:01:56,910 --> 00:01:59,950
‫seja esgotada, basicamente, quando os participantes são maiores do

43
00:01:59,950 --> 00:02:02,000
‫que o tamanho máximo do grupo.

44
00:02:02,000 --> 00:02:04,300
‫Agora, finalmente, é claro, quando o usuário

45
00:02:04,300 --> 00:02:06,760
‫deseja reservar um determinado tour em uma

46
00:02:06,760 --> 00:02:09,800
‫determinada data, você precisa verificar se o tour ainda está

47
00:02:09,800 --> 00:02:11,450
‫disponível na data selecionada.

48
00:02:11,450 --> 00:02:12,290
‫OK?

49
00:02:12,290 --> 00:02:15,480
‫Portanto, esse é um desafio bastante sofisticado,

50
00:02:15,480 --> 00:02:18,180
‫mas também muito divertido de implementar,

51
00:02:18,180 --> 00:02:21,480
‫e realmente adicionaria uma lógica de negócios significativa

52
00:02:21,480 --> 00:02:22,883
‫a este projeto.

53
00:02:24,100 --> 00:02:26,040
‫Finalmente, você também pode implementar alguns

54
00:02:26,040 --> 00:02:28,140
‫dos recursos de autenticação avançada sobre

55
00:02:28,140 --> 00:02:30,480
‫os quais já falamos um pouco antes

56
00:02:30,480 --> 00:02:32,150
‫na seção de segurança.

57
00:02:32,150 --> 00:02:35,480
‫Por exemplo, você pode confirmar o endereço de e-mail de

58
00:02:35,480 --> 00:02:38,360
‫um usuário basicamente enviando a ele um e-mail com

59
00:02:38,360 --> 00:02:39,570
‫um link no

60
00:02:39,570 --> 00:02:41,160
‫qual ele precisa clicar

61
00:02:41,160 --> 00:02:44,540
‫e, somente após o clique, o usuário estará realmente cadastrado

62
00:02:44,540 --> 00:02:47,450
‫no aplicativo e poderá fazer coisas como comprar passeios.

63
00:02:47,450 --> 00:02:49,690
‫Além disso, você pode manter os

64
00:02:49,690 --> 00:02:52,400
‫usuários conectados com algo chamado tokens de atualização.

65
00:02:52,400 --> 00:02:55,130
‫E isso é um pouco complicado de implementar,

66
00:02:55,130 --> 00:02:57,900
‫mas se você pesquisar no Google sobre como isso

67
00:02:57,900 --> 00:03:00,330
‫funciona, tenho certeza que pode encontrar

68
00:03:00,330 --> 00:03:03,770
‫uma boa solução ou também pode encontrar uma por conta própria.

69
00:03:03,770 --> 00:03:07,070
‫Por fim, você também pode implementar a autenticação de

70
00:03:07,070 --> 00:03:10,360
‫dois fatores, mas este é um passo adiante.

71
00:03:10,360 --> 00:03:12,360
‫Então, basicamente, quando um usuário

72
00:03:12,360 --> 00:03:15,200
‫faz login, ele recebe algo como uma mensagem

73
00:03:15,200 --> 00:03:17,920
‫de texto em seu telefone com um

74
00:03:17,920 --> 00:03:19,670
‫código que precisa ser

75
00:03:19,670 --> 00:03:23,370
‫colocado no aplicativo para ser autenticado após a segunda etapa.

76
00:03:23,370 --> 00:03:25,210
‫Então, esses são alguns desafios legais

77
00:03:25,210 --> 00:03:28,140
‫que você pode realmente implementar no site da API,

78
00:03:28,140 --> 00:03:29,463
‫basicamente do projeto.

79
00:03:30,400 --> 00:03:34,000
‫Mas também há coisas que você pode fazer no site.

80
00:03:34,000 --> 00:03:37,270
‫Por exemplo, você pode implementar o formulário de inscrição, que

81
00:03:37,270 --> 00:03:40,380
‫deve ser muito semelhante ao formulário de login.

82
00:03:40,380 --> 00:03:43,720
‫Não fiz isso porque é muito semelhante

83
00:03:43,720 --> 00:03:44,790
‫ao formulário

84
00:03:44,790 --> 00:03:48,540
‫de login e não queria perder tempo fazendo isso.

85
00:03:48,540 --> 00:03:50,930
‫Mas é claro que você pode ir em

86
00:03:50,930 --> 00:03:52,430
‫frente e implementar esse também.

87
00:03:52,430 --> 00:03:55,680
‫Outra coisa legal que você pode fazer no site é

88
00:03:55,680 --> 00:03:57,980
‫que, na página de detalhes do tour,

89
00:03:57,980 --> 00:03:59,340
‫você pode permitir

90
00:03:59,340 --> 00:04:01,890
‫que um usuário adicione uma avaliação diretamente no

91
00:04:01,890 --> 00:04:05,010
‫site, mas apenas se o usuário tiver feito esse tour.

92
00:04:05,010 --> 00:04:07,760
‫Portanto, você teria que verificar se o usuário

93
00:04:07,760 --> 00:04:10,270
‫atualmente conectado realmente reservou o passeio

94
00:04:10,270 --> 00:04:13,690
‫atual e também se o tempo do passeio já passou.

95
00:04:13,690 --> 00:04:16,650
‫E se sim, então você pode adicionar um formulário

96
00:04:16,650 --> 00:04:18,690
‫à página onde o usuário pode

97
00:04:18,690 --> 00:04:21,920
‫adicionar uma nova revisão, por exemplo, usando nossa API de revisão.

98
00:04:21,920 --> 00:04:24,600
‫Ou também, e este está um pouco relacionado,

99
00:04:24,600 --> 00:04:26,990
‫você pode ocultar toda a seção de

100
00:04:26,990 --> 00:04:30,480
‫reserva na mesma página de detalhes do passeio se o

101
00:04:30,480 --> 00:04:32,620
‫usuário atual reservou o passeio.

102
00:04:32,620 --> 00:04:33,810
‫OK.

103
00:04:33,810 --> 00:04:36,250
‫Isso evitaria que o mesmo usuário reservasse o

104
00:04:36,250 --> 00:04:37,850
‫mesmo passeio duas vezes.

105
00:04:37,850 --> 00:04:40,990
‫E, como você já está fazendo isso no

106
00:04:40,990 --> 00:04:43,350
‫front-end, também deve evitar reservas

107
00:04:43,350 --> 00:04:45,981
‫duplicadas no back-end do seu modelo.

108
00:04:45,981 --> 00:04:47,660
‫Na verdade, isso será

109
00:04:47,660 --> 00:04:51,380
‫muito semelhante a evitar revisões duplicadas do mesmo usuário.

110
00:04:51,380 --> 00:04:52,860
‫OK.

111
00:04:52,860 --> 00:04:54,160
‫Além disso, você

112
00:04:54,160 --> 00:04:57,250
‫pode implementar uma funcionalidade de passeio muito boa.

113
00:04:57,250 --> 00:04:59,590
‫Então, quando você tem algo como um

114
00:04:59,590 --> 00:05:01,720
‫botão de curtir ou um coração

115
00:05:01,720 --> 00:05:03,620
‫no tour, e quando o

116
00:05:03,620 --> 00:05:06,120
‫usuário clica nele, ele é adicionado aos favoritos.

117
00:05:06,120 --> 00:05:07,340
‫E então no

118
00:05:07,340 --> 00:05:11,940
‫site, você pode ter uma página de favoritos ou apenas um painel de favoritos onde

119
00:05:11,940 --> 00:05:14,860
‫o usuário pode ver todos os seus passeios favoritos.

120
00:05:14,860 --> 00:05:17,210
‫Então essa não é realmente

121
00:05:17,210 --> 00:05:19,713
‫difícil, mas acho muito divertida de implementar.

122
00:05:20,900 --> 00:05:23,230
‫Em seguida, na página da conta do

123
00:05:23,230 --> 00:05:25,610
‫usuário, você pode implementar a página Minhas

124
00:05:25,610 --> 00:05:27,870
‫revisões, que já tem um

125
00:05:27,870 --> 00:05:30,410
‫link agora, e nessa página o usuário

126
00:05:30,410 --> 00:05:34,730
‫pode ver e talvez também editar e excluir todas as suas próprias revisões.

127
00:05:34,730 --> 00:05:36,660
‫Agora, se você conhece React, então

128
00:05:36,660 --> 00:05:38,900
‫esta seria realmente uma maneira incrível de

129
00:05:38,900 --> 00:05:42,580
‫usar a API Natours e também treinar suas habilidades de React

130
00:05:42,580 --> 00:05:43,940
‫ao mesmo tempo.

131
00:05:43,940 --> 00:05:46,260
‫E depois de fazer isso com o

132
00:05:46,260 --> 00:05:49,140
‫React, você pode recriar a página inteira como um

133
00:05:49,140 --> 00:05:51,790
‫aplicativo de página única com o React

134
00:05:51,790 --> 00:05:53,290
‫ou algo assim.

135
00:05:53,290 --> 00:05:57,010
‫Assim, como Angular ou Vue também funcionaria para isso.

136
00:05:57,010 --> 00:05:57,843
‫Direito.

137
00:05:57,843 --> 00:06:00,626
‫Seria ótimo se você fizesse

138
00:06:00,626 --> 00:06:03,933
‫isso, e eu realmente adoraria ver isso implementado.

139
00:06:04,770 --> 00:06:07,310
‫Finalmente, para os administradores, você pode

140
00:06:07,310 --> 00:06:09,800
‫implementar as páginas Gerenciar, onde

141
00:06:09,800 --> 00:06:13,180
‫os administradores podem criar, ler, atualizar e excluir

142
00:06:13,180 --> 00:06:15,300
‫todos os recursos, ou

143
00:06:15,300 --> 00:06:18,923
‫seja, todos os passeios, usuários, avaliações e reservas.

144
00:06:19,860 --> 00:06:23,130
‫Mais uma vez, React seria uma boa opção

145
00:06:23,130 --> 00:06:25,770
‫para isso, ou se não, apenas

146
00:06:25,770 --> 00:06:28,480
‫o Javascript regular no front end também

147
00:06:28,480 --> 00:06:33,270
‫funcionaria muito bem, por exemplo, atualizar todos esses recursos usando chamadas Ajax.

148
00:06:33,270 --> 00:06:36,530
‫Portanto, há realmente uma tonelada de coisas que você

149
00:06:36,530 --> 00:06:39,070
‫poderia implementar para melhorar ainda mais nosso

150
00:06:39,070 --> 00:06:41,030
‫projeto e nosso site.

151
00:06:41,030 --> 00:06:42,180
‫Direito?

152
00:06:42,180 --> 00:06:43,860
‫E tenho certeza de que

153
00:06:43,860 --> 00:06:46,200
‫você poderia até mesmo pensar em outras coisas aqui.

154
00:06:46,200 --> 00:06:48,450
‫Então, novamente, seria realmente

155
00:06:48,450 --> 00:06:52,120
‫incrível ver alguns desses recursos realmente implementados por você.

156
00:06:52,120 --> 00:06:54,910
‫E se você fizer um deles ou até mais,

157
00:06:54,910 --> 00:06:57,240
‫certifique-se de compartilhar seu resultado na seção de

158
00:06:57,240 --> 00:06:59,153
‫perguntas e respostas do curso.

159
00:07:00,120 --> 00:07:04,190
‫Enfim, é isso para este vídeo e para esta seção

160
00:07:04,190 --> 00:07:07,260
‫e também quase para este curso.

161
00:07:07,260 --> 00:07:10,750
‫Então, ótimo trabalho mais uma vez e agora a seguir, tudo

162
00:07:10,750 --> 00:07:13,620
‫o que realmente resta a fazer é preparar

163
00:07:13,620 --> 00:07:15,460
‫o aplicativo para implantação e,

164
00:07:15,460 --> 00:07:19,500
‫em seguida, implantá-lo em um servidor de produção ao vivo para realmente

165
00:07:19,500 --> 00:07:21,673
‫compartilhar nosso projeto com o mundo.

