﻿1
00:00:01,200 --> 00:00:04,530
‫-: Bienvenidos de nuevo al último video de la sección.

2
00:00:04,530 --> 00:00:07,950
‫Y en esta sección terminamos nuestro proyecto, tanto

3
00:00:07,950 --> 00:00:11,350
‫la API como el sitio web renderizado, al

4
00:00:11,350 --> 00:00:12,910
‫menos por ahora.

5
00:00:12,910 --> 00:00:17,180
‫Así que una vez más, felicitaciones por llegar a este punto y

6
00:00:17,180 --> 00:00:20,970
‫por sentarse durante más de 30 horas de video, siempre

7
00:00:20,970 --> 00:00:22,573
‫escuchando mi voz.

8
00:00:23,670 --> 00:00:25,840
‫De todos modos, en este

9
00:00:25,840 --> 00:00:28,260
‫último video, quería abordar rápidamente algunos temas

10
00:00:28,260 --> 00:00:31,650
‫que podríamos haber agregado a la API y al

11
00:00:31,650 --> 00:00:34,810
‫sitio web, y básicamente dejarlos como desafíos si

12
00:00:34,810 --> 00:00:35,863
‫lo desea.

13
00:00:37,350 --> 00:00:40,160
‫Así que podríamos haber agregado más lógica comercial

14
00:00:40,160 --> 00:00:42,500
‫a nuestro proyecto, por ejemplo, agregando

15
00:00:42,500 --> 00:00:46,310
‫una restricción de que los usuarios solo pueden revisar un recorrido

16
00:00:46,310 --> 00:00:47,910
‫que realmente han reservado.

17
00:00:47,910 --> 00:00:50,940
‫Y eso tendría mucho sentido, ¿verdad?

18
00:00:50,940 --> 00:00:53,510
‫Así que quiero que lo pruebes por tu

19
00:00:53,510 --> 00:00:55,320
‫cuenta si te apetece.

20
00:00:55,320 --> 00:00:58,450
‫Ahora, estos desafíos no los voy a resolver yo

21
00:00:58,450 --> 00:01:02,620
‫mismo, a menos que realmente haya mucha demanda para uno de ellos.

22
00:01:02,620 --> 00:01:04,190
‫Y de hecho, dejé

23
00:01:04,190 --> 00:01:06,650
‫este tipo de desafíos más complicados para

24
00:01:06,650 --> 00:01:09,950
‫que los estudiantes realmente los realicen por su cuenta en

25
00:01:09,950 --> 00:01:14,150
‫mis otros cursos, y realmente he visto algunos resultados creativos en muchos casos.

26
00:01:14,150 --> 00:01:17,160
‫Así que espero que también pruebes algunos de ellos.

27
00:01:17,160 --> 00:01:19,170
‫De todos modos, a continuación,

28
00:01:19,170 --> 00:01:22,180
‫también podría implementar algunas rutas de reserva anidadas, por ejemplo,

29
00:01:22,180 --> 00:01:25,130
‫obtener todas las reservas para un recorrido determinado y

30
00:01:25,130 --> 00:01:27,940
‫obtener todas las reservas para un usuario determinado, por

31
00:01:27,940 --> 00:01:30,080
‫lo que se basan en identificadores.

32
00:01:30,080 --> 00:01:33,690
‫También podría mejorar drásticamente las fechas de la gira, y lo que

33
00:01:33,690 --> 00:01:37,050
‫quiero decir con eso es que podría agregar participantes y

34
00:01:37,050 --> 00:01:40,230
‫un campo soldOut a cada una de las fechas.

35
00:01:40,230 --> 00:01:42,420
‫Y la fecha se convierte en

36
00:01:42,420 --> 00:01:44,770
‫una especie de instancia de la gira.

37
00:01:44,770 --> 00:01:47,300
‫Luego, cuando un usuario realmente reserva un

38
00:01:47,300 --> 00:01:49,970
‫recorrido, debe seleccionar una de las fechas disponibles,

39
00:01:49,970 --> 00:01:51,860
‫y luego su reserva

40
00:01:51,860 --> 00:01:54,070
‫en una de las fechas aumentará el

41
00:01:54,070 --> 00:01:56,910
‫número de participantes en la fecha hasta que se

42
00:01:56,910 --> 00:01:59,950
‫reserve, por lo que básicamente cuando haya más participantes

43
00:01:59,950 --> 00:02:02,000
‫que el tamaño máximo del grupo.

44
00:02:02,000 --> 00:02:04,300
‫Ahora, finalmente, por supuesto, cuando el usuario

45
00:02:04,300 --> 00:02:06,760
‫desea reservar un recorrido determinado en una

46
00:02:06,760 --> 00:02:09,800
‫fecha determinada, debe verificar si el recorrido todavía está disponible

47
00:02:09,800 --> 00:02:11,450
‫en esa fecha seleccionada.

48
00:02:11,450 --> 00:02:12,290
‫¿Okey?

49
00:02:12,290 --> 00:02:15,480
‫Así que en realidad es un desafío bastante

50
00:02:15,480 --> 00:02:18,180
‫sofisticado, pero también muy divertido de

51
00:02:18,180 --> 00:02:21,480
‫implementar, y realmente agregaría una lógica comercial significativa

52
00:02:21,480 --> 00:02:22,883
‫a este proyecto.

53
00:02:24,100 --> 00:02:26,040
‫Finalmente, también podría implementar algunas de

54
00:02:26,040 --> 00:02:28,140
‫las características de autenticación avanzada de las

55
00:02:28,140 --> 00:02:30,480
‫que ya hablamos un poco antes en

56
00:02:30,480 --> 00:02:32,150
‫la sección de seguridad.

57
00:02:32,150 --> 00:02:35,480
‫Por ejemplo, puede confirmar la dirección de correo electrónico de

58
00:02:35,480 --> 00:02:38,360
‫un usuario básicamente enviándole un correo electrónico con un

59
00:02:38,360 --> 00:02:39,570
‫enlace en el

60
00:02:39,570 --> 00:02:41,160
‫que deben hacer clic,

61
00:02:41,160 --> 00:02:44,540
‫y solo después del clic, el usuario está realmente registrado en

62
00:02:44,540 --> 00:02:47,450
‫la aplicación y puede hacer cosas como comprar recorridos.

63
00:02:47,450 --> 00:02:49,690
‫También puede mantener a los

64
00:02:49,690 --> 00:02:52,400
‫usuarios conectados con algo llamado tokens de actualización.

65
00:02:52,400 --> 00:02:55,130
‫Y eso de nuevo es un poco complicado

66
00:02:55,130 --> 00:02:57,900
‫de implementar, pero si busca en Google cómo funciona,

67
00:02:57,900 --> 00:03:00,330
‫estoy seguro de que puede encontrar

68
00:03:00,330 --> 00:03:03,770
‫una buena solución o incluso puede encontrar una por su cuenta.

69
00:03:03,770 --> 00:03:07,070
‫Por último, también podría implementar la autenticación de dos factores,

70
00:03:07,070 --> 00:03:10,360
‫pero este lo va un paso más allá.

71
00:03:10,360 --> 00:03:12,360
‫Entonces, básicamente, cuando un usuario

72
00:03:12,360 --> 00:03:15,200
‫inicia sesión, recibe algo como un mensaje de

73
00:03:15,200 --> 00:03:17,920
‫texto en su teléfono con un código

74
00:03:17,920 --> 00:03:19,670
‫que debe ingresar en

75
00:03:19,670 --> 00:03:23,370
‫la aplicación para poder autenticarse después de ese segundo paso.

76
00:03:23,370 --> 00:03:25,210
‫Entonces, estos son algunos desafíos agradables

77
00:03:25,210 --> 00:03:28,140
‫que realmente podría implementar en el sitio de la API,

78
00:03:28,140 --> 00:03:29,463
‫básicamente del proyecto.

79
00:03:30,400 --> 00:03:34,000
‫Pero también hay cosas que puedes hacer en el sitio web.

80
00:03:34,000 --> 00:03:37,270
‫Por ejemplo, puede implementar el formulario de registro, que debería

81
00:03:37,270 --> 00:03:40,380
‫ser muy similar al formulario de inicio de sesión.

82
00:03:40,380 --> 00:03:43,720
‫Así que no hice eso realmente porque es muy similar

83
00:03:43,720 --> 00:03:44,790
‫al formulario de

84
00:03:44,790 --> 00:03:48,540
‫inicio de sesión, por lo que no quería perder el tiempo haciéndolo.

85
00:03:48,540 --> 00:03:50,930
‫Pero, por supuesto, también

86
00:03:50,930 --> 00:03:52,430
‫puede implementarlo.

87
00:03:52,430 --> 00:03:55,680
‫Entonces, otra cosa buena que podría hacer en el sitio web

88
00:03:55,680 --> 00:03:57,980
‫es que en la página de detalles

89
00:03:57,980 --> 00:03:59,340
‫del recorrido, puede permitir

90
00:03:59,340 --> 00:04:01,890
‫que un usuario agregue una reseña directamente en el

91
00:04:01,890 --> 00:04:05,010
‫sitio web, pero solo si el usuario ha realizado ese recorrido.

92
00:04:05,010 --> 00:04:07,760
‫Por lo tanto, debe verificar si el usuario que

93
00:04:07,760 --> 00:04:10,270
‫ha iniciado sesión actualmente ha reservado el

94
00:04:10,270 --> 00:04:13,690
‫recorrido actual y también si el tiempo del recorrido ya pasó.

95
00:04:13,690 --> 00:04:16,650
‫Y si es así, puede agregar un formulario a

96
00:04:16,650 --> 00:04:18,690
‫la página donde el usuario puede

97
00:04:18,690 --> 00:04:21,920
‫agregar una nueva revisión, por ejemplo, utilizando nuestra API de revisión.

98
00:04:21,920 --> 00:04:24,600
‫O también, y este está un poco relacionado,

99
00:04:24,600 --> 00:04:26,990
‫puede ocultar toda la sección de reserva

100
00:04:26,990 --> 00:04:30,480
‫en la misma página de detalles del tour si el usuario

101
00:04:30,480 --> 00:04:32,620
‫actual ha reservado el tour.

102
00:04:32,620 --> 00:04:33,810
‫Bueno.

103
00:04:33,810 --> 00:04:36,250
‫Esto evitaría que el mismo usuario reservara el

104
00:04:36,250 --> 00:04:37,850
‫mismo tour dos veces.

105
00:04:37,850 --> 00:04:40,990
‫Y luego, dado que ya lo está haciendo en la

106
00:04:40,990 --> 00:04:43,350
‫parte frontal, también debe evitar las reservas

107
00:04:43,350 --> 00:04:45,981
‫duplicadas en la parte posterior de su modelo.

108
00:04:45,981 --> 00:04:47,660
‫En realidad, será

109
00:04:47,660 --> 00:04:51,380
‫muy similar a evitar revisiones duplicadas del mismo usuario.

110
00:04:51,380 --> 00:04:52,860
‫Bueno.

111
00:04:52,860 --> 00:04:54,160
‫Además, puede implementar

112
00:04:54,160 --> 00:04:57,250
‫una funcionalidad similar a un recorrido muy agradable.

113
00:04:57,250 --> 00:04:59,590
‫Entonces, cuando tiene algo como un botón de

114
00:04:59,590 --> 00:05:01,720
‫Me gusta o un corazón en el

115
00:05:01,720 --> 00:05:03,620
‫recorrido, y luego, cuando el usuario

116
00:05:03,620 --> 00:05:06,120
‫hace clic en él, se agrega a sus favoritos.

117
00:05:06,120 --> 00:05:07,340
‫Y luego, en

118
00:05:07,340 --> 00:05:11,940
‫el sitio web, podría tener una página de favoritos o simplemente un panel de favoritos

119
00:05:11,940 --> 00:05:14,860
‫donde el usuario puede ver todos sus recorridos favoritos.

120
00:05:14,860 --> 00:05:17,210
‫Así que no es realmente difícil,

121
00:05:17,210 --> 00:05:19,713
‫pero creo que es muy divertido de implementar.

122
00:05:20,900 --> 00:05:23,230
‫A continuación, en la página de la

123
00:05:23,230 --> 00:05:25,610
‫cuenta de usuario, puede implementar la página Mis

124
00:05:25,610 --> 00:05:27,870
‫reseñas, que ya tiene un enlace

125
00:05:27,870 --> 00:05:30,410
‫en este momento, y en esa página el

126
00:05:30,410 --> 00:05:34,730
‫usuario puede ver y tal vez también editar y eliminar todas sus propias reseñas.

127
00:05:34,730 --> 00:05:36,660
‫Ahora bien, si conoces React,

128
00:05:36,660 --> 00:05:38,900
‫esta sería una forma increíble de usar

129
00:05:38,900 --> 00:05:42,580
‫la API de Natours y también entrenar tus habilidades de React

130
00:05:42,580 --> 00:05:43,940
‫al mismo tiempo.

131
00:05:43,940 --> 00:05:46,260
‫Y una vez que esté haciendo eso

132
00:05:46,260 --> 00:05:49,140
‫con React, podría recrear la página completa como una

133
00:05:49,140 --> 00:05:51,790
‫aplicación de una sola página con React o

134
00:05:51,790 --> 00:05:53,290
‫algo como esto.

135
00:05:53,290 --> 00:05:57,010
‫Entonces, como Angular o Vue también funcionarían para esto.

136
00:05:57,010 --> 00:05:57,843
‫Derecha.

137
00:05:57,843 --> 00:06:00,626
‫Así que sería genial si hicieras

138
00:06:00,626 --> 00:06:03,933
‫eso, y realmente me encantaría ver esto implementado.

139
00:06:04,770 --> 00:06:07,310
‫Finalmente, para los administradores, puede

140
00:06:07,310 --> 00:06:09,800
‫implementar las páginas Administrar, donde

141
00:06:09,800 --> 00:06:13,180
‫los administradores pueden crear, leer, actualizar y eliminar

142
00:06:13,180 --> 00:06:15,300
‫todos los recursos, es

143
00:06:15,300 --> 00:06:18,923
‫decir, todos los recorridos, usuarios, reseñas y reservas.

144
00:06:19,860 --> 00:06:23,130
‫Una vez más, React podría ser una buena

145
00:06:23,130 --> 00:06:25,770
‫opción para esto, o si no,

146
00:06:25,770 --> 00:06:28,480
‫entonces solo Javascript regular en el front-end

147
00:06:28,480 --> 00:06:33,270
‫también funcionaría muy bien, por ejemplo, actualice todos estos recursos usando llamadas Ajax.

148
00:06:33,270 --> 00:06:36,530
‫Así que realmente hay un montón de cosas que

149
00:06:36,530 --> 00:06:39,070
‫podrías implementar para mejorar aún más nuestro

150
00:06:39,070 --> 00:06:41,030
‫proyecto y nuestro sitio web.

151
00:06:41,030 --> 00:06:42,180
‫¿Derecha?

152
00:06:42,180 --> 00:06:43,860
‫Y estoy seguro de que

153
00:06:43,860 --> 00:06:46,200
‫incluso podrías pensar en algunas otras cosas aquí.

154
00:06:46,200 --> 00:06:48,450
‫Entonces, nuevamente, sería realmente asombroso

155
00:06:48,450 --> 00:06:52,120
‫ver algunas de estas características realmente implementadas por usted.

156
00:06:52,120 --> 00:06:54,910
‫Y si hace uno de ellos o incluso más, asegúrese

157
00:06:54,910 --> 00:06:57,240
‫de compartir su resultado en la sección de

158
00:06:57,240 --> 00:06:59,153
‫preguntas y respuestas del curso.

159
00:07:00,120 --> 00:07:04,190
‫De todos modos, eso es todo por este video y por

160
00:07:04,190 --> 00:07:07,260
‫esta sección y también casi por este curso.

161
00:07:07,260 --> 00:07:10,750
‫Así que un gran trabajo una vez más y ahora el

162
00:07:10,750 --> 00:07:13,620
‫siguiente, todo lo que realmente queda por hacer es

163
00:07:13,620 --> 00:07:15,460
‫preparar la aplicación para la

164
00:07:15,460 --> 00:07:19,500
‫implementación y luego implementarla en un servidor de producción en vivo para compartir

165
00:07:19,500 --> 00:07:21,673
‫realmente nuestro proyecto con el mundo.

