Github: https://github.com/mohdjami/Travel
Link implantado: https://travelplanai.vercel.app/
Vídeo do YT: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJApq
O diagrama acima fornece uma visão geral de alto nível do aplicativo, serviços e soluções.
Utilizei Next.js, Supabase, Gemini-1.5-flash Model, Shadcn, Typescript e Tailwind CSS.
Supabase usado para autenticar e autorizar usuários
Por que Supabase para autenticação e armazenamento de dados?
GitHub
Credenciais
Aqui usamos o modelo Google gemini-1.5-flash.
Next.js para construir um aplicativo full stack.
Next.js é uma excelente escolha devido à renderização do lado do servidor, geração de sites estáticos e SEO.
Após receber as Preferências do Usuário do Formulário de Itinerário uma solicitação é enviada ao Backend com todos os dados.
O itinerário é então usado nos Componentes para exibir os dados. Também integrei mapas do folheto.
Gemini-1.5-flash é um modelo avançado de IA desenvolvido pelo Google que potencializa a geração de itinerários em nosso aplicativo. Este modelo é excelente na compreensão de preferências de viagem complexas e na geração de itinerários detalhados e personalizados. Ao aproveitar o Gemini-1.5-flash, somos capazes de criar planos de viagem altamente personalizados que consideram fatores como restrições orçamentárias, interesses pessoais e duração da viagem.
Ele oferece várias vantagens importantes para nosso aplicativo de itinerário de viagem. Em primeiro lugar, a geração de itinerários com tecnologia de IA pode processar grandes quantidades de dados sobre destinos, atrações e preferências do usuário com muito mais rapidez e eficiência do que os métodos manuais. Em segundo lugar, permite recomendações altamente personalizadas que se podem adaptar aos interesses e restrições únicos de cada utilizador. Por último, a IA pode aprender e melhorar continuamente as suas sugestões com base no feedback dos utilizadores e nas tendências de viagens, garantindo que a nossa aplicação permanece relevante e valiosa para os viajantes.
Leaflet é uma biblioteca JavaScript de código aberto para mapas interativos compatíveis com dispositivos móveis. Para integrar os mapas Leaflet em nosso aplicativo de itinerário de viagem, seguimos estas etapas principais:
Ao incorporar mapas Leaflet, melhorei a experiência do usuário, fornecendo contexto visual para cada destino e atividade dentro dos itinerários gerados.
Também enfrentei um problema com o folheto: o componente Mapa não carregava 100%, causando erros e a página não carregando corretamente. Então resolvi esse problema com esta solução.
Para aprimorar a experiência do usuário e gerenciar o uso da API, implementei um sistema baseado em créditos. Veja como funciona:
Este sistema nos permite controlar os custos da API e, ao mesmo tempo, proporcionar aos usuários flexibilidade na utilização do serviço.
O Painel fornece aos usuários uma visão geral dos itinerários gerados, créditos restantes e informações da conta. Os principais recursos incluem:
A seção Perfil e configurações do usuário permite que os usuários personalizem sua experiência e gerenciem as informações da conta. Os principais recursos desta seção incluem:
Para aumentar o tempo de resposta para geração do Itineray, implementei um sistema de filas.
Processou todas as tarefas não críticas usando fila.
Embora haja um erro após a geração dos itinerários, deve haver um mecanismo alternativo. No momento, se houver algum erro ao alimentar dados no banco de dados, não há mecanismo de fallback devido à perda do itinerário que precisa ser corrigido.
Por enquanto desativei as políticas RLS. Irá trabalhar nisso
Problema:
A rota de geração de viagens está demorando muito para gerar os itinerários.
Ele contém vários processos:
Solução:
Analisando a rota com atenção, posso perceber que Inserir Preferências do Usuário, Inserir Resposta e Atualizar Créditos são tarefas não críticas e enviar a resposta ao usuário é a principal tarefa crítica.
Assim, posso executar essas tarefas não críticas de forma assíncrona, usando uma fila.
Essa abordagem assíncrona pode diminuir muito o tempo de resposta.
A implementação de um mecanismo de cache pode melhorar significativamente o desempenho e o tempo de resposta do nosso aplicativo de itinerário de viagem. Ao armazenar em cache dados acessados com frequência, como destinos populares ou preferências comuns do usuário, podemos reduzir a carga em nossos servidores e fornecer resultados mais rápidos aos usuários. Isto pode ser particularmente benéfico para usuários recorrentes ou para exibir recomendações iniciais enquanto resultados mais personalizados estão sendo gerados.
Farei isso para o Dashboard, armazenarei em cache os itinerários de viagem visitados recentemente, o que reduzirá o número de solicitações ao banco de dados, tornando o aplicativo mais rápido.
Dockerizou o aplicativo para fácil implantação no AWS Elastic Container Service, que é a melhor abordagem para escalonamento automático.
Atualmente está implantado no Vercel para uso de demonstração.