Github: https://github.com/mohdjami/Travel
Enlace implementado: https://travelplanai.vercel.app/
Vídeo de YouTube: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJApq
El diagrama anterior ofrece una descripción general de alto nivel de la aplicación, los servicios y las soluciones.
He aprovechado Next.js, Supabase, Gemini-1.5-flash Model, Shadcn, Typescript y Tailwind CSS.
Supabase usado para autenticar y autorizar usuarios
¿Por qué Supabase para autenticación y almacenamiento de datos?
Github
Cartas credenciales
Aquí hemos utilizado el modelo Google gemini-1.5-flash.
Next.js para crear aplicaciones de pila completa.
Next.js es una excelente opción debido a la renderización del lado del servidor, la generación de sitios estáticos y el SEO.
Después de recibir las Preferencias de Usuario del Formulario de Itinerario se envía una solicitud al Backend con todos los datos.
Luego, el itinerario se utiliza en los Componentes para mostrar los datos. También he integrado mapas del folleto.
Gemini-1.5-flash es un modelo de IA avanzado desarrollado por Google que impulsa la generación de itinerarios en nuestra aplicación. Este modelo destaca por comprender preferencias de viaje complejas y generar itinerarios detallados y personalizados. Al aprovechar Gemini-1.5-flash, podemos crear planes de viaje altamente personalizados que consideran factores como restricciones presupuestarias, intereses personales y duración del viaje.
Ofrece varias ventajas clave para nuestra aplicación de itinerarios de viaje. En primer lugar, la generación de itinerarios impulsada por IA puede procesar grandes cantidades de datos sobre destinos, atracciones y preferencias de los usuarios mucho más rápido y eficientemente que los métodos manuales. En segundo lugar, permite recomendaciones altamente personalizadas que pueden adaptarse a los intereses y limitaciones únicos de cada usuario. Por último, la IA puede aprender y mejorar continuamente sus sugerencias basándose en los comentarios de los usuarios y las tendencias de viajes, lo que garantiza que nuestra aplicación siga siendo relevante y valiosa para los viajeros.
Leaflet es una biblioteca JavaScript de código abierto para mapas interactivos aptos para dispositivos móviles. Para integrar mapas de Leaflet en nuestra aplicación de itinerarios de viaje, seguimos estos pasos clave:
Al incorporar mapas de Folletos, mejoré la experiencia del usuario al proporcionar contexto visual para cada destino y actividad dentro de los itinerarios generados.
También tuve un problema con el folleto: el componente Mapa no se cargaba al 100%, lo que provocaba errores y la página no se cargaba correctamente. Entonces abordé este problema con esta solución.
Para mejorar la experiencia del usuario y gestionar el uso de API, implementé un sistema basado en créditos. Así es como funciona:
Este sistema nos permite controlar los costos de API y al mismo tiempo brinda a los usuarios flexibilidad en el uso del servicio.
El Panel proporciona a los usuarios una descripción general de sus itinerarios generados, créditos restantes e información de la cuenta. Las características clave incluyen:
La sección Configuración y perfil de usuario permite a los usuarios personalizar su experiencia y administrar la información de su cuenta. Las características clave de esta sección incluyen:
Para aumentar el tiempo de respuesta para generar Itineray, implementé un sistema de colas.
Procesé todas las tareas no críticas usando la cola.
Si bien hay un error después de generar itinerarios, debería haber un mecanismo alternativo. En este momento, si hay algún error al introducir datos en la base de datos, no existe un mecanismo alternativo por el cual se pierda el itinerario y deba corregirse.
Por ahora he desactivado las políticas RLS. Trabajará en esto
Problema:
La ruta de generación de viajes está tomando mucho tiempo para generar los itinerarios.
Contiene varios procesos:
Solución:
Al analizar la ruta cuidadosamente, puedo distinguir que Insertar preferencias de usuario, Insertar respuesta y Actualizar créditos no son tareas críticas y enviar la respuesta al usuario es la principal tarea crítica.
Entonces puedo realizar estas tareas no críticas de forma asincrónica mediante el uso de una cola.
Este enfoque asincrónico puede reducir mucho el tiempo de respuesta.
La implementación de un mecanismo de almacenamiento en caché puede mejorar significativamente el rendimiento y el tiempo de respuesta de nuestra aplicación de itinerario de viaje. Al almacenar en caché los datos a los que se accede con frecuencia, como destinos populares o preferencias comunes de los usuarios, podemos reducir la carga en nuestros servidores y brindar resultados más rápidos a los usuarios. Esto podría resultar especialmente beneficioso para usuarios habituales o para mostrar recomendaciones iniciales mientras se generan resultados más personalizados.
Haré esto para el Panel de control, almacenaré en caché los itinerarios de viaje visitados recientemente, lo que reducirá la cantidad de solicitudes a la base de datos y eventualmente hará que la aplicación sea más rápida.
Dockerizó la aplicación para una fácil implementación en AWS Elastic Container Service, que es el mejor enfoque para el escalado automático.
Actualmente está implementado en Vercel para uso de demostración.