Skip to content

sparta-project-illoga/FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

163 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

illoga (일로가)

illoga Logo

Site Logo                              Brochure Logo
사이트 바로가기                          illoga 브로셔



프로젝트 소개


여행계획을 지인들과 함께 작성하거나 원하는 조건의 여행계획을 추천받아보세요!

  • 메인 페이지에서 새로 올라온 여행계획, 인기 있는 계획, 새로운 지역 정보를 확인할 수 있습니다.
  • 원하는 지역 또는 키워드로 여행 장소 정보를 검색할 수 있습니다.

⭐ 여행계획을 직접 짜고 싶은 p

  • 사이트에서 제공하는 여행 장소 정보를 활용하여 자신의 여행계획을 작성할 수 있습니다.
  • 친구들과 함께 여행을 계획하고 싶다면, 친구들을 초대하여 공동 작성 및 채팅을 통해 소통할 수 있습니다.

⭐ 여행은 가고 싶지만 계획은 짜기 싫은 j

  • 원하는 지역, 예산, 기간 등의 조건을 입력하여 여행계획을 추천받을 수 있습니다.
  • 추천된 여행계획 중 마음에 드는 일정으로 쉽게 여행을 떠나보세요!

⭐ 자신의 지역을 알리고 싶은 사용자

  • 현재 위치를 기반으로 지역 인증을 받고 지역 게시판에 나만의 장소를 추천해보세요!

기능 소개


플랜 직접 생성
  • 사용자는 원하는 여행 계획을 직접 생성할 수 있습니다.
  • 원하는 카테고리 추가하고 멤버를 초대하여 나만의 플랜을 만들수 있습니다


플랜 추천 생성
  • 특정 조건에 따라 추천된 여행 계획을 생성할 수 있습니다. 사용자는 원하는 지역, 예산, 일정을 선택하면 시스템이 추천 플랜을 제안합니다.


스케줄 생성
  • 사용자는 다양한 장소과 일정을 스케줄로 생성할 수 있습니다. 각 스케줄을 기반으로 여행 계획을 세울 수 있으며 생성한 스케줄은 플랜에 반영됩니다.


지역 정보
  • 각 지역의 음식점, 관광 명소, 박물관 등을 검색할 수 있습니다

지역 게시판
  • 사용자는 지역 게시판을 통해 자신이 현재 위치하는 지역에 대한 정보를 알리, 다른 사용자와 소통할 수 있습니다. 게시판을 통해 여행 팁과 추천 장소를 공유할 수 있습니다.




유저 페이지
  • 각 사용자는 개인 페이지에서 자신의 프로필을 관리하고, 지역 인증을 할 수 있습니다.


내 플랜 및 채팅방 조회
  • 사용자는 자신이 생성한 플랜과 참여 중인 채팅방을 조회할 수 있습니다. 각 채팅방에서 다른 사용자와 실시간으로 대화할 수 있습니다.


채팅방

채팅방에서는 사용자 간의 실시간 채팅이 가능합니다. 각 플랜마다 고유한 채팅방이 생성되며, 친구들과 여행 계획을 논의하거나 의견을 나눌 수 있습니다.




프로젝트 멤버

김진성 (🔗 깃허브)

🔨 주요 작업

  • 백엔드 User 부분
  • 프론트엔드 User, main, Board, like, geoLocation 커스텀 훅을 이용한 지역인증

🪄 사용 기술 | Nest.js | Redis | nodemailer | S3 Bucket | React |



김민건 (🔗 깃허브)

🔨 주요 작업

  • 백엔드 Plan, Schedule
  • 프론트엔드 Plan, Profile, Category, Member, myplan 페이지 커스텀

🪄 사용 기술 | Nest.js | Redis | S3 Bucket | React |



이윤민 (🔗 깃허브)

🔨 주요 작업

  • 백엔드 category, member, 채팅
  • 프론트엔드 플랜과 스케줄 등록 및 조회, 채팅, 지역 정보 페이지

🪄 사용 기술 | Nest.js | Socket.io | React |



조완희 (🔗 깃허브)

🔨 주요 작업

  • 백엔드 post, post-comment, location
  • TourAPI를 통한 기본 DB 데이터 수집
  • Puppeteer를 통한 DB 데이터 보충
  • GeoLocation을 이용한 사용자 위치정보 인증
  • 서버 환경 구축 및 배포: Router 53 > ACM > ALB > EC2 > PM2 > Docker

🪄 사용 기술 | Router 53 | ACM | EC2 | Docker | PM2 |


사용 기술 스택


사용 기술 도입 이유
React JS 기반의 라이브러리로 가장 널리 사용됩니다. JSX 문법을 사용하여 가독성과 유지보수성이 뛰어납니다.
Axios TypeScript를 강력하게 지원하며, 엔티티, 레파지토리 등 다양한 기능을 제공합니다.

프로젝트 아키텍처


스크린샷(193)


기술적 의사결정


Redis / Memcached

구분 내용
장점 Memcached에 비해 다양한 자료형을 지원하고, 레플리카, 클러스터링 등 여러 기능을 제공합니다. 또한, 한 개의 키에 저장할 수 있는 데이터 범위가 더 커서 확장성 및 조작 측면에서 유리합니다.
단점 트래픽이 급증하면 응답 속도가 불안정할 수 있고, Memcached에 비해 메모리 사용량이 많습니다. 또한, 데이터 변경이 잦은 경우 메모리 파편화가 발생하기 쉽습니다.
선택 이유 1. 회원가입 로직 중 이메일 인증 코드를 저장하기 위해 사용했습니다. Nodemailer를 사용하여 응답속도 저하가 발생했지만, Redis의 빠른 처리 속도로 이를 개선했습니다.
2. 빠른 추천 시스템을 구현하기 위해 메모리 기반의 Redis를 사용했습니다. 이미 추천된 플랜을 Redis에 저장하고, 각 키에 만료 시간을 설정하여 일정 기간 후 다시 추천할 수 있도록 했습니다.

socket.io

구분 내용
장점 웹소켓 기반으로 서버와 클라이언트 간에 실시간 양방향 통신이 가능합니다. 또한, 룸과 네임스페이스를 구분하여 특정 룸에만 메시지를 전달하는 등 다양한 채널 관리가 가능합니다.
단점 코드의 복잡성 증가 및 오버헤드 발생이 있을 수 있습니다. 룸, 네임스페이스, 이벤트 관리 등 다양한 기능을 관리해야 하기 때문입니다.
선택 이유 채팅 기능을 구현하기 위해 실시간 통신이 필요했습니다. 프로젝트 특성상 각 플랜에 해당하는 멤버들 간의 채팅방을 생성하기 위해 여러 채팅방을 구분하여 메시지를 보낼 수 있는 socket.io가 필요했습니다.

Puppeteer / Selenium

구분 내용
장점 Puppeteer는 Node.js 기반으로 작동하며 Chromium 브라우저를 대상으로 합니다. Selenium은 다양한 언어와 여러 브라우저를 지원합니다.
선택 이유 두 도구 모두 필요한 크롤링 기능을 제공하지만, 속도 측면에서 Puppeteer가 더 빠르고 프로젝트의 언어가 Node.js이므로 Puppeteer를 선택했습니다.

About

No description, website, or topics provided.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors