Github: https://github.com/mohdjami/Travel
導入されたリンク: https://travelplannai.vercel.app/
YouTube ビデオ: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJApq
上の図は、アプリケーション、サービス、ソリューションの概要を示しています。
私は Next.js、Supabase、Gemini-1.5-flash Model、Shadcn、Typescript、Tailwind CSS を活用しました。
ユーザーの認証と認可に Supabase を使用
認証とデータ ストアに Supabase を使用する理由
ギットハブ
資格
ここでは Google gemini-1.5-flash モデルを使用しました。
フルスタック アプリケーションを構築するための Next.js。
Next.js は、サーバーサイド レンダリング、静的サイト生成、SEO の点で優れた選択肢です。
旅程フォームからユーザー設定を受信した後、リクエストがすべてのデータとともにバックエンドに送信されます。
次に、旅程はデータを表示するためにコンポーネントで使用されます。チラシの地図も統合しました。
Gemini-1.5-flash は、Google が開発した高度な AI モデルで、アプリケーションでの旅程生成を強化します。このモデルは、複雑な旅行の好みを理解し、詳細でパーソナライズされた旅程を生成することに優れています。 Gemini-1.5 フラッシュを活用することで、予算の制約、個人的な興味、旅行期間などの要素を考慮した、高度にカスタマイズされた旅行計画を作成できます。
これは、旅行旅程アプリケーションにいくつかの重要な利点をもたらします。まず、AI を活用した旅程生成は、目的地、観光スポット、ユーザーの好みに関する膨大な量のデータを手動による方法よりもはるかに高速かつ効率的に処理できます。第 2 に、各ユーザー固有の興味や制約に適応できる、高度にパーソナライズされた推奨事項が可能になります。最後に、AI はユーザーからのフィードバックや旅行傾向に基づいて提案を継続的に学習および改善できるため、アプリケーションが旅行者にとって関連性があり価値のあるものであり続けることが保証されます。
Leaflet は、モバイル対応のインタラクティブ マップ用のオープンソース JavaScript ライブラリです。 Leaflet マップを旅行旅程アプリケーションに統合するには、次の重要な手順に従いました。
リーフレット マップを組み込むことで、生成された旅程内の各目的地とアクティビティに視覚的なコンテキストを提供することで、ユーザー エクスペリエンスを向上させました。
また、マップコンポーネントが100%読み込まれず、エラーが発生し、ページが正しく読み込まれないというリーフレットの問題にも直面しました。そこで私はこの解決策でこの問題に取り組みました。
ユーザー エクスペリエンスを向上させ、API の使用を管理するために、クレジット ベースのシステムを実装しました。仕組みは次のとおりです。
このシステムにより、ユーザーが柔軟にサービスを利用できるようにしながら、API コストを管理することができます。
ダッシュボードは、生成された旅程、残りのクレジット、アカウント情報の概要をユーザーに提供します。主な機能は次のとおりです。
[ユーザー プロファイルと設定] セクションでは、ユーザーはエクスペリエンスをカスタマイズし、アカウント情報を管理できます。このセクションの主な特徴は次のとおりです。
Itineray 生成の応答時間を短縮するために、キュー システムを実装しました。
キューを使用してすべての重要でないタスクを処理しました。
旅程の生成後にエラーが発生しても、フォールバック メカニズムが必要です。現時点では、データベースにデータを供給する際にエラーが発生した場合、旅程が失われるため修正する必要があるフォールバック メカニズムがありません。
今のところ、RLS ポリシーを無効にしています。これに取り組みます
問題:
旅行生成ルートでは旅程の生成に時間がかかっています。
これにはいくつかのプロセスが含まれています。
解決:
ルートを注意深く分析すると、ユーザー設定の挿入、応答の挿入、クレジットの更新は重要なタスクではなく、ユーザーへの応答の送信が主な重要なタスクであることがわかります。
したがって、キューを使用して、これらの重要ではないタスクを非同期で実行できます。
この非同期アプローチにより、応答時間を大幅に短縮できます。
キャッシュ メカニズムを実装すると、旅行旅程アプリケーションのパフォーマンスと応答時間が大幅に向上します。人気の目的地や一般的なユーザー設定など、頻繁にアクセスされるデータをキャッシュすることで、サーバーの負荷を軽減し、より迅速に結果をユーザーに提供できます。これは、リピート ユーザーにとって、またはよりパーソナライズされた結果が生成されている間に最初の推奨事項を表示する場合に特に有益です。
これをダッシュボードに対して行い、最近訪問した旅行の旅程をキャッシュします。これにより、データベースへのリクエストの数が減り、結果的にアプリケーションが高速化されます。
自動スケーリングに最適なアプローチである AWS Elastic Container Service に簡単にデプロイできるようにアプリケーションを Docker 化しました。
現在、デモ用に Vercel にデプロイされています。