‫-: Bienvenidos de nuevo al último video de la sección.
‫Y en esta sección terminamos nuestro proyecto, tanto
‫la API como el sitio web renderizado, al
‫menos por ahora.
‫Así que una vez más, felicitaciones por llegar a este punto y
‫por sentarse durante más de 30 horas de video, siempre
‫escuchando mi voz.
‫De todos modos, en este
‫último video, quería abordar rápidamente algunos temas
‫que podríamos haber agregado a la API y al
‫sitio web, y básicamente dejarlos como desafíos si
‫lo desea.
‫Así que podríamos haber agregado más lógica comercial
‫a nuestro proyecto, por ejemplo, agregando
‫una restricción de que los usuarios solo pueden revisar un recorrido
‫que realmente han reservado.
‫Y eso tendría mucho sentido, ¿verdad?
‫Así que quiero que lo pruebes por tu
‫cuenta si te apetece.
‫Ahora, estos desafíos no los voy a resolver yo
‫mismo, a menos que realmente haya mucha demanda para uno de ellos.
‫Y de hecho, dejé
‫este tipo de desafíos más complicados para
‫que los estudiantes realmente los realicen por su cuenta en
‫mis otros cursos, y realmente he visto algunos resultados creativos en muchos casos.
‫Así que espero que también pruebes algunos de ellos.
‫De todos modos, a continuación,
‫también podría implementar algunas rutas de reserva anidadas, por ejemplo,
‫obtener todas las reservas para un recorrido determinado y
‫obtener todas las reservas para un usuario determinado, por
‫lo que se basan en identificadores.
‫También podría mejorar drásticamente las fechas de la gira, y lo que
‫quiero decir con eso es que podría agregar participantes y
‫un campo soldOut a cada una de las fechas.
‫Y la fecha se convierte en
‫una especie de instancia de la gira.
‫Luego, cuando un usuario realmente reserva un
‫recorrido, debe seleccionar una de las fechas disponibles,
‫y luego su reserva
‫en una de las fechas aumentará el
‫número de participantes en la fecha hasta que se
‫reserve, por lo que básicamente cuando haya más participantes
‫que el tamaño máximo del grupo.
‫Ahora, finalmente, por supuesto, cuando el usuario
‫desea reservar un recorrido determinado en una
‫fecha determinada, debe verificar si el recorrido todavía está disponible
‫en esa fecha seleccionada.
‫¿Okey?
‫Así que en realidad es un desafío bastante
‫sofisticado, pero también muy divertido de
‫implementar, y realmente agregaría una lógica comercial significativa
‫a este proyecto.
‫Finalmente, también podría implementar algunas de
‫las características de autenticación avanzada de las
‫que ya hablamos un poco antes en
‫la sección de seguridad.
‫Por ejemplo, puede confirmar la dirección de correo electrónico de
‫un usuario básicamente enviándole un correo electrónico con un
‫enlace en el
‫que deben hacer clic,
‫y solo después del clic, el usuario está realmente registrado en
‫la aplicación y puede hacer cosas como comprar recorridos.
‫También puede mantener a los
‫usuarios conectados con algo llamado tokens de actualización.
‫Y eso de nuevo es un poco complicado
‫de implementar, pero si busca en Google cómo funciona,
‫estoy seguro de que puede encontrar
‫una buena solución o incluso puede encontrar una por su cuenta.
‫Por último, también podría implementar la autenticación de dos factores,
‫pero este lo va un paso más allá.
‫Entonces, básicamente, cuando un usuario
‫inicia sesión, recibe algo como un mensaje de
‫texto en su teléfono con un código
‫que debe ingresar en
‫la aplicación para poder autenticarse después de ese segundo paso.
‫Entonces, estos son algunos desafíos agradables
‫que realmente podría implementar en el sitio de la API,
‫básicamente del proyecto.
‫Pero también hay cosas que puedes hacer en el sitio web.
‫Por ejemplo, puede implementar el formulario de registro, que debería
‫ser muy similar al formulario de inicio de sesión.
‫Así que no hice eso realmente porque es muy similar
‫al formulario de
‫inicio de sesión, por lo que no quería perder el tiempo haciéndolo.
‫Pero, por supuesto, también
‫puede implementarlo.
‫Entonces, otra cosa buena que podría hacer en el sitio web
‫es que en la página de detalles
‫del recorrido, puede permitir
‫que un usuario agregue una reseña directamente en el
‫sitio web, pero solo si el usuario ha realizado ese recorrido.
‫Por lo tanto, debe verificar si el usuario que
‫ha iniciado sesión actualmente ha reservado el
‫recorrido actual y también si el tiempo del recorrido ya pasó.
‫Y si es así, puede agregar un formulario a
‫la página donde el usuario puede
‫agregar una nueva revisión, por ejemplo, utilizando nuestra API de revisión.
‫O también, y este está un poco relacionado,
‫puede ocultar toda la sección de reserva
‫en la misma página de detalles del tour si el usuario
‫actual ha reservado el tour.
‫Bueno.
‫Esto evitaría que el mismo usuario reservara el
‫mismo tour dos veces.
‫Y luego, dado que ya lo está haciendo en la
‫parte frontal, también debe evitar las reservas
‫duplicadas en la parte posterior de su modelo.
‫En realidad, será
‫muy similar a evitar revisiones duplicadas del mismo usuario.
‫Bueno.
‫Además, puede implementar
‫una funcionalidad similar a un recorrido muy agradable.
‫Entonces, cuando tiene algo como un botón de
‫Me gusta o un corazón en el
‫recorrido, y luego, cuando el usuario
‫hace clic en él, se agrega a sus favoritos.
‫Y luego, en
‫el sitio web, podría tener una página de favoritos o simplemente un panel de favoritos
‫donde el usuario puede ver todos sus recorridos favoritos.
‫Así que no es realmente difícil,
‫pero creo que es muy divertido de implementar.
‫A continuación, en la página de la
‫cuenta de usuario, puede implementar la página Mis
‫reseñas, que ya tiene un enlace
‫en este momento, y en esa página el
‫usuario puede ver y tal vez también editar y eliminar todas sus propias reseñas.
‫Ahora bien, si conoces React,
‫esta sería una forma increíble de usar
‫la API de Natours y también entrenar tus habilidades de React
‫al mismo tiempo.
‫Y una vez que esté haciendo eso
‫con React, podría recrear la página completa como una
‫aplicación de una sola página con React o
‫algo como esto.
‫Entonces, como Angular o Vue también funcionarían para esto.
‫Derecha.
‫Así que sería genial si hicieras
‫eso, y realmente me encantaría ver esto implementado.
‫Finalmente, para los administradores, puede
‫implementar las páginas Administrar, donde
‫los administradores pueden crear, leer, actualizar y eliminar
‫todos los recursos, es
‫decir, todos los recorridos, usuarios, reseñas y reservas.
‫Una vez más, React podría ser una buena
‫opción para esto, o si no,
‫entonces solo Javascript regular en el front-end
‫también funcionaría muy bien, por ejemplo, actualice todos estos recursos usando llamadas Ajax.
‫Así que realmente hay un montón de cosas que
‫podrías implementar para mejorar aún más nuestro
‫proyecto y nuestro sitio web.
‫¿Derecha?
‫Y estoy seguro de que
‫incluso podrías pensar en algunas otras cosas aquí.
‫Entonces, nuevamente, sería realmente asombroso
‫ver algunas de estas características realmente implementadas por usted.
‫Y si hace uno de ellos o incluso más, asegúrese
‫de compartir su resultado en la sección de
‫preguntas y respuestas del curso.
‫De todos modos, eso es todo por este video y por
‫esta sección y también casi por este curso.
‫Así que un gran trabajo una vez más y ahora el
‫siguiente, todo lo que realmente queda por hacer es
‫preparar la aplicación para la
‫implementación y luego implementarla en un servidor de producción en vivo para compartir
‫realmente nuestro proyecto con el mundo.