Search

혜리 README

공동
프로젝트 추가 기능 기획
공통 컴포넌트 작업
컨벤션 설정
README.md 작성
프로젝트 관리

간단 스타일

역할 팀 리더
전체적인 프로젝트 총괄
프로젝트 디자인 및 기능 개발
데이터 수집 및 가공
UI/기능
게시글 상세페이지
게시글 삭제, 신고
게시글 상세페이지
게시글 삭제, 신고
댓글 게시, 삭제, 신고
검색 페이지 및 기본 기능
직관일정 페이지 및 기능
일정추가 페이지 및 기능
에러 (404) 페이지
모달/바텀시트 기능
좋아요 기능
로그아웃
스켈레톤 UI
무한 스크롤 기능

디테일 스타일

프로젝트 역할

프로젝트 총괄
프로젝트 기획
아이디어를 모아서 계획 구체화
추가 기능를 이용하기 위한 API 명세 작성
커뮤니케이션
프로젝트 기간동안 20회의 회의, 리팩토링 기간동안 10회의 회의 진행
회의, Issue, PR를 통해 진행 상황과 목표 공유
프로젝트 초기 설정 작업
폴더 트리 구성
ESLint / Prettier 설정 및 적용
GlobalStyle 적용
Router 기본 설계 및 구축
CommonAPI를 통해 기본 api 설정
Netlify를 통한 프로젝트 배포
프로젝트 디자인
전반적인 UI 디자인
데이터 수집 및 가공
웹 크롤링을 통한 필요한 데이터 수집 (스포츠 팀 정보, 경기 일정 정보, 선수 정보)
데이터 가공 및 서버 등록 (스포츠 팀 가입, 경기 일정 게시글 등록)

UI 개발

Header, SearchBox, FeedFilter, SelectFilter 공통 컴포넌트 제작
Comment, List (경기 List, 유저 List, 직관일정 List), GamePost, Skeleton 관련 컴포넌트 제작
일정 추가, 에러, 직관일정, 게시물 상세, 검색 페이지 제작

기능 개발

홈피드
데이터 로드
react-query를 이용한 usePost Hooks를 사용해 페이지 변경 시에도 피드 데이터 유지
피드 필터
팔로우 중인 팀의 과거와 현재 경기 일정 게시물만 필터링하여 피드 로드
SelectFilter “일정 피드만” 선택시 경기 일정 게시물만 필터링 하여 피드 로드
검색
게시물
게시물 삭제, 신고 기능: usePost Hooks 내에서 react-query의 useMutation과 QueryClient invalidateQueries 메서드를 사용해 서버에서 변경된 데이터를 바로 화면에 적용
댓글 추가, 삭제, 신고 기능: useComment Hooks 내에서 react-query 메서드 사용해 서버에서 변경된 데이터 바로 적용
좋아요 기능: useLike Hooks를 사용해 좋아요 수와 상태 업데이트
경기 일정 게시물
현재의 경기 일정의 경우 weatherAPI를 가져와 게시물 정보에 날씨 정보를 저장하고 날씨 포스트
과거의 경기 일정의 경우 저장된 날씨 정보를 포스트
좋아요 기능: 경기 일정의 경우 좋아요를 할 시 직관 일정 추가
일정추가 / 직관일정
일정 추가/삭제 시 중복된 경기일정을 모두 좋아요 활성화/비활성화 시키고 해당 일정을 직관 일정으로 등록/삭제
모달 / 바텀시트
스타일 충돌을 방지하기 위해 createPortal를 사용해 모달 / 바텀시트 렌더링
전역에서 사용하기 위한 Recoil과 재사용성을 위한 useModal과 useBottomSheet Hooks 사용해 모달 / 바텀시트의 상태 업데이트

리팩토링

fetch에서 axios로 변경
공통된 설정을 위해 axios instance 사용 (baseURL, Content-Type)
로컬에서 token 정보 추가시 자동으로 Authorization 설정
useAuth로 모든 Recoil에서 관리하는 유저 정보 업데이트
서버 데이터 관리는 react-query로 변경
서버 데이터와 로컬 데이터를 통합하여 일관성 유지
중복된 요청을 줄여 사용자 경험 최적화
반복되는 작업은 custom Hooks을 사용해 관리
PrivateRouter를 설정해 로그인 여부에 따른 Router 설정

사용 라이브러리

axios
네트워크 요청을 할때 전역적으로 에러 처리와 설정 처리를 하기 위해서 사용
classnames
CSS 클래스를 동적으로 조작하고 조합할 때 사용
react-intersection-observer
효율적으로 뷰포트 내의 요소의 가시성 상태 변화을 감지해서 무한 스크롤링하기 위해서 사용
styled-components
스타일을 보다 쉽게 관리하고 다시 재사용하기 위해서 사용
styled-reset
일관된 브라우저 스타일을 제거해서 CSS 초기화를 쉽게 적용하기 위해 사용
react-query
자동 캐싱과 데이터 리패칭을 통해 서버 사이드 데이터 관리를 하기 위해 사용

주요 기능

서버 사이드 데이터 관리: useQuery, useMutation

무한 스크롤링: useInfiniteQuery & react-intersection-observer

네트워크 요청 처리: axios.interceptor