HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
프로그래머스 프론트엔드 데브코스 2기
프로그래머스 프론트엔드 데브코스 2기
/
📓
기동팀
/
💪
기동팀(CheQuiz)
/
✨
리팩토링 로드맵
✨

리팩토링 로드맵

장기 목표

  • 진짜 서비스 화 목표? ⇒ 시기 상조
  • 문제 → 스펙 적용 프로젝트 ⇒ 설정된 advanced
test 관련
  • 점수 로직 / 랜덤 퀴즈 올바르게 등 로직 관련 테스트는 좋을 것이라는 의견
  • 테스트를 위한 테스트/ 모든 부분에 테스트를 넣을 필요는 없다는 의견
  • RTL, jest, cypress
  • 초기 비용이 많이 들긴 하지만 → 템플릿을 재사용할 경우 사용할 수록 비용 감소
성능 최적화
  • lighthouse 점수 측정

3주 로드맵

  • API 설계 (gitbook 링크)
  • API 서버 배포 및 변경
  • 디자인 시스템 및 스타일드 컴포넌트 리팩토링
  • 버그 수정
  • 서비스 관점 변경
  • advanced 기능 중 1순위 기능 구현
  • 리팩토링
    • 틈틈히 여유 있을 때

API 설계

  • 고려할 부분
    • User → strapi 있는 그대로
      • 내부에 뱃지, 포인트,
      • 유저가 만든 퀴즈, 유저가 푼 퀴즈, comment,좋아요 ⇒ 유저가 정보 가지고 있기 ( 1 : n )
    • Quiz
    • QuizPack
    • Achievement
      • 문제를 해결한 뒤 점수 업데이트 후 조건 만족시 뱃지 부여
      • 댓글 일정 개수 이상 작성 시에도 뱃지 부여 필요 → 서버에서 실행
    • Comment
    • Like

디자인 시스템 및 스타일드 컴포넌트 리팩토링

  • 공통 스타일드 컴포넌트 분리
    • 회의 필요
  • storybook 도입 고려

버그 수정

  • 유저정보페이지에서 댓글 부분 overflow 되는 현상
  • 닉네임 변경시 reload 해결
  • QuizResulPage 문제 height 고정 수정, 버튼이 아닌 background에 색깔 넣기

서비스 변경 필요 사항

  • 초반에 레벨업 빨리 하도록 변경!
 

advanced 1순위 기능

  • 퀴즈 생성 페이지
    • 문제 정답 객관식 (feat)
    • 문제 출제 시 이미지 (feat)
  • 퀴즈 결과 페이지
    • 정답 아이콘 상단에 정답 표시 (style)
    • 숫자가 들어올 시에도 correct 색으로 표시 (style)
    • 획득 경험치 표시 ( 미해 userCard 애니메이션 예정⇒ history 로..?) (feat)
  • 유저 정보 페이지
    • 퀴즈 수정 / 삭제
      • 퀴즈 수정/삭제 ⇒ 본인이나 관리자만
      • 퀴즈 삭제 시 ⇒ POST를 주고, deleted 여부를 bool로

리팩토링 시 유의점

공통 사항
  • 네이밍
    • 인터페이스 외에 대부분 카멜케이스로 하자
  • 함수 분리
    • 순수 함수로 분리 가능한 것은 컴포넌트 외부로 빼자
      • 컴포넌트 파일에서 함수 컴포넌트 외부로
      • 컴포넌트 폴더에서 파일 분리(모듈화)
      • 완전 중요 로직일 경우 그대로 두자 ⇒ 리뷰어가 중요 로직임을 알 수 있도록
      • 재사용성이 있는 함수는 utils 폴더로 이동
  • 폴더 구조
    • 컴포넌트
      • components/common
        • 어디서나 호환되는 text, button 등
      • components
      • pages
        • 페이지 컴포넌트 postfix : ~Page
    • common 삭제
    • constants
      • breakpoints(뱃지 관련 이쪽으로 빼기)
세부 사항
  • form
    • useForm으로 퀴즈, 로그인, 회원가입, 닉네임 변경, 패스워드 변경 통일
  • 컴포넌트에 종속된 로직 분리
    • 유저 카드 컴포넌트 내 뱃지 가져오는 로직
  • 모달 하나로 통일
    • Nickname Modal, Password Modal
api 폴더
  • 네이밍을 auth, create, user처럼 quiz로 통일
  • API요청 로직만 담아둔다
  • 로직 관련된 부분은 utils 폴더로 따로 빼두자
  • getUserList 제거 및 user 폴더 내부 api 사용
  • import문 정렬
    • 기준 필요
Userinfo/getBadge 관련
  • Map<string,number> 타입 지정
  • getBadge 등 외부로 분리

advanced 후순위 기능

  • 대댓글
  • 회원 탈퇴
  • 랜덤 퀴즈 서버에서 처리하기
  • 퀴즈 풀기 : 난이도별로 달팽이 넣어놓기
  • OX 위치 고정