[믿고] 20대 대학생을 위한 미팅 서비스

배포 주소
프로젝트 기간
2024/03/26 → 2024/05/01
깃허브링크
시연영상
유저피드백결과지
테스트 ID / PW
test2@test.com 123456
언니 MEETGO 만나봐!
서비스 둘러보기 MEETGO
Github Repository : Repository

 아키텍쳐

 주요 기술

학교 인증
미팅방 생성
미팅 대기방
실시간 채팅
약속 장소/ 날짜 정하기
마이페이지 + 스쳐간 인연
리뷰
미들웨어 체인을 이용한 라우트 보호

기술적 의사결정

Next.js
프레임워크로서 번들링, 컴파일 등과 같은 툴링을 추상화하고 자동으로 구성하기 때문에 애플리케이션을 만드는데 보다 집중할 수 있습니다.
서버 사이드 랜더링(SSR)과 정적 사이트 생성(SSG), 서버컴포넌트 등 React의 새로운 기능을 사용할 수 있습니다.
TypeScript
서로 다른 코드간의 관계를 표현하기 위해 사용됩니다.
가장 일반적인 오류인 유형 오류, 오타 등의 발생을 최소화하기 위해 사용하였습니다.
코드가 실행되기 전에 실행되어 타입이 올바른지 확인할 수 있어 사용하였습니다.
Zustand
간단한 설정으로 클라이언트 컴포넌트 간 이동이 필요한 데이터를 관리할 수 있습니다.
redux의 reduxDevTools로 디버깅이 가능하기 때문에 오류 추적에 용의합니다.
Jotai와 Recoil은 전역상태에 바로 접근하기 때문에 어느 단계에서 변화가 일어났는지 추적이 어렵습니다.
따라서 저희 조는 Zustand로 상태 관리를 선택했습니다.
React-Query
기존 useEffect와 zustand로 서버에서 불러온 데이터를 관리하다 보니,
client 데이터와 서버 데이터를 이중으로 관리해야했고,
useEffect가 실행될 때마다 불필요한 서버요청이 발생하는 문제점을 보완하고자 선택했습니다.
하나의 쿼리 키를 사용하여 특정 데이터를 전역적으로 관리함으로써, 중복된 서버 요청 없이 다른 컴포넌트에서도 데이터에 접근할 수 있게 되었습니다.
Supabase
데이터베이스, 인증, 스토어 등 백엔드 개발에 필요한 기능을 간편하게 이용할 수 있어 선택하였습니다.
실시간 기능을 제공하여 기능을 작동시킨 사람이 아니어도 추적이 가능한 서비스를 제공하고 있습니다.
Firebase는 검색기능을 제공하지 않기 때문에 데이터를 선별한 뒤 가져올 수 있는 Supabase를 선택하였습니다.
UNIVCERT
학교 인증을 통해 유저를 대학생으로 한정하고, 신뢰성 있는 미팅 홈페이지로 만들기 위해 선택했습니다.
Tailwind-CSS
일관적인 형태의 간편한 CSS 구현이 가능합니다.
Kakao-map
검색된 장소에 대한 자세한 장소를 얻을 수 있는 API를 선택하였습니다.
네이버는 더 적은 데이터를 주기 때문에 카카오 API를 선택하였습니다.

 트러블슈팅

유저 정보를 불러올 때마다 getUser 메서드를 사용하여 불필요한 호출이 많아지는 이슈
여러 명이 동시 채팅 시 payload가 무시되는 이슈
실시간 채팅으로 사진 보내기
미팅 대기방에서 나가는 유저의 정보를 받아오지 못하는 현상
장소, 시간 선택 시 실시간으로 방장 외 사람들에게 반영 안되는 현상

 팀원

팀 노션 :
Search
이름
태그