Github: https://github.com/mohdjami/Travel
배포된 링크: https://travelplanai.vercel.app/
YT 영상: https://youtu.be/oeioDsKQ4cQ?si=U35aBhen3L3zJApq
위 다이어그램은 애플리케이션, 서비스 및 솔루션에 대한 높은 수준의 개요를 제공합니다.
저는 Next.js, Supabase, Gemini-1.5-flash Model, Shadcn, Typescript 및 Tailwind CSS를 활용했습니다.
사용자 인증 및 권한 부여를 위해 Supabase를 사용함
인증 및 데이터 저장소를 위해 Superbase를 사용하는 이유는 무엇입니까?
Github
신임장
여기서는 Google gemini-1.5-flash 모델을 사용했습니다.
풀스택 애플리케이션 구축을 위한 Next.js
Next.js는 서버 측 렌더링, 정적 사이트 생성 및 SEO 덕분에 탁월한 선택입니다.
일정 양식에서 사용자 기본 설정을 받은 후 모든 데이터와 함께 요청이 백엔드로 전송됩니다.
그런 다음 여행 일정은 구성 요소에서 데이터를 표시하는 데 사용됩니다. 나는 또한 전단지의 지도를 통합했습니다.
Gemini-1.5-flash는 Google이 개발한 고급 AI 모델로, 애플리케이션의 여정 생성을 지원합니다. 이 모델은 복잡한 여행 선호도를 이해하고 상세하고 개인화된 여행 일정을 생성하는 데 탁월합니다. Gemini-1.5-flash를 활용함으로써 예산 제약, 개인적 관심사, 여행 기간 등의 요소를 고려한 고도로 맞춤화된 여행 계획을 세울 수 있습니다.
이는 여행 일정 애플리케이션에 몇 가지 주요 이점을 제공합니다. 첫째, AI 기반 여행 일정 생성은 목적지, 명소, 사용자 선호도에 대한 방대한 양의 데이터를 수동 방법보다 훨씬 빠르고 효율적으로 처리할 수 있습니다. 둘째, 각 사용자의 고유한 관심과 제약에 적응할 수 있는 고도로 개인화된 추천이 가능합니다. 마지막으로 AI는 사용자 피드백과 여행 동향을 기반으로 제안을 지속적으로 학습하고 개선하여 애플리케이션이 여행자에게 관련성과 가치를 유지하도록 보장합니다.
Leaflet은 모바일 친화적인 대화형 지도를 위한 오픈 소스 JavaScript 라이브러리입니다. Leaflet 지도를 여행 일정 애플리케이션에 통합하기 위해 다음과 같은 주요 단계를 따랐습니다.
전단지 지도를 통합함으로써 생성된 여행 일정 내 각 목적지와 활동에 대한 시각적 컨텍스트를 제공함으로써 사용자 경험을 향상시켰습니다.
또한 지도 구성 요소가 100% 로드되지 않아 오류가 발생하고 페이지가 제대로 로드되지 않는 전단지 문제에 직면했습니다. 그래서 저는 이 솔루션으로 이 문제를 해결했습니다.
사용자 경험을 향상하고 API 사용을 관리하기 위해 크레딧 기반 시스템을 구현했습니다. 작동 방식은 다음과 같습니다.
이 시스템을 통해 당사는 API 비용을 제어하는 동시에 사용자에게 서비스 사용에 유연성을 제공할 수 있습니다.
대시보드는 사용자에게 생성된 여행 일정, 남은 크레딧 및 계정 정보에 대한 개요를 제공합니다. 주요 기능은 다음과 같습니다:
사용자 프로필 및 설정 섹션에서는 사용자가 자신의 경험을 맞춤화하고 계정 정보를 관리할 수 있습니다. 이 섹션의 주요 기능은 다음과 같습니다.
Itineray 생성에 대한 응답 시간을 늘리기 위해 대기열 시스템을 구현했습니다.
대기열을 사용하여 중요하지 않은 모든 작업을 처리했습니다.
일정을 생성한 후 오류가 발생하는 경우 대체 메커니즘이 있어야 합니다. 현재 데이터베이스에 데이터를 공급하는 중에 오류가 발생하는 경우 일정이 손실되어 수정해야 하는 대체 메커니즘이 없습니다.
지금은 RLS 정책을 비활성화했습니다. 이 작업을 수행합니다.
문제:
여행 생성 경로는 여행 일정을 생성하는 데 많은 시간이 소요됩니다.
여기에는 여러 프로세스가 포함되어 있습니다.
해결책:
경로를 주의 깊게 분석함으로써 사용자 기본 설정 삽입, 응답 삽입 및 크레딧 업데이트는 중요하지 않은 작업이고 사용자에게 응답을 보내는 것이 주요 중요한 작업임을 알 수 있습니다.
따라서 대기열을 사용하여 중요하지 않은 작업을 비동기식으로 수행할 수 있습니다.
이 비동기식 접근 방식은 응답 시간을 많이 줄일 수 있습니다.
캐싱 메커니즘을 구현하면 여행 일정 애플리케이션의 성능과 응답 시간을 크게 향상시킬 수 있습니다. 인기 있는 목적지나 일반적인 사용자 선호도 등 자주 액세스하는 데이터를 캐싱함으로써 서버의 로드를 줄이고 사용자에게 더 빠른 결과를 제공할 수 있습니다. 이는 반복 사용자에게 특히 유용할 수 있으며 보다 개인화된 결과가 생성되는 동안 초기 권장 사항을 표시하는 데 유용할 수 있습니다.
대시보드에 대해 이 작업을 수행하겠습니다. 최근 방문한 여행 일정을 캐시하여 데이터베이스에 대한 요청 수를 줄여 결과적으로 애플리케이션을 더 빠르게 만들 것입니다.
Auto Scaling을 위한 최상의 접근 방식인 AWS Elastic Container Service에 쉽게 배포할 수 있도록 애플리케이션을 Docker화했습니다.
현재 데모용으로 Vercel에 배포되어 있습니다.