Skip to content

chwihae/frontend

Repository files navigation

pick-git-logo

📍 취준생의 결정 고민을 투표하는 사이트
📎 취해
🗓️ 2023/09/18 ~ 진행중

👥 참여인원

기획자 1인, 디자이너 1인, 프론트엔드 1인, 백엔드 1인

🛠 기술 스택

React Typescript TailwindCSS
Tanstack Query React Hook Form Axios

eslint Prettier Husky Lint-Staged

📱 기능

1.스플래쉬 및 로그인 페이지 2.메인 홈의 등급, 탭, 필터, 무한스크롤
취해 스플래쉬 및 로그인 gif 화면 취해 메인홈의 탭, 필터, 무한스크롤 gif 화면
  • 등급에 따른 Progress bar 게이지 및 캐릭터 변경
  • 카테고리 분류
  • 해결상태 필터
  • 투표 리스트 무한스크롤 구현
3.글작성 페이지
취해 글작성 gif 화면
  • React-hook-form의 useFormContext를 통해, 폼의 필드 컴포넌트를 전역으로 관리하여 구현
  • React-hook-form의 useFieldArray를 사용해 투표 항목 필드를 배열로 관리하며 추가 및 삭제를 구현
  • 폼 유효성 검사 및 유효성 만족해야 등록버튼 활성화
  • 작성 완료시 토스트 메시지 출력
4.투표글 (내가 쓴) 진행중, 마감, 삭제 5.투표글 (타인이 쓴) 진행중, 댓글
취해 내가쓴투표글 진행중, 마감, 삭제 gif 화면 취해 타인이쓴투표글 진행중, 댓글 gif 화면
  • Tanstack-Query의 useQuery, useMutation으로 새로고침없이 투표 및 댓글 기능 구현
  • Tanstack-Query의 useInfiniteQuery로 댓글 무한스크롤 구현
  • 작성자와 투표자별, 투표 진행 여부별, 투표 참여별 권한 접근 설정
  • 스크랩 기능 구현

4. 공통사항

  • JWT 토큰을 이용한 카카오 소셜로그인 기능 개발
  • Router로 유저 권한에 따라 접속 허용범위 설정
  • tailwindCSS config 설정으로 디자인 시스템 적용
  • ESLint, Husky 설정으로 런타임 에러 최소화
  • Axios interceptor로 전역 request와 response에 대한 성공 및 에러 처리
  • ContextAPI로 클라이언트 전역 상태 관리
  • tsconfig.json, vite.config.ts 를 통해 절대경로 설정
  • favicon, og 카드 설정

📂 폴더 구조

┣ 📂.husky
┣ 📂.vscode
┣ 📂src
┃ ┣ 📂apis
┃ ┣ 📂assets
┃ ┣ 📂components
┃ ┣ 📂constants
┃ ┣ 📂hooks
┃ ┣ 📂pages
┃ ┣ 📂types
┃ ┣ 📂utils
┗ 📜etc (setting files)