Skip to content

[김태영] sprint10#179

Open
csbizz wants to merge 7 commits intocodeit-sprint-fullstack:next-김태영from
csbizz:next-김태영-sprint10

Hidden character warning

The head ref may contain hidden characters: "next-\uae40\ud0dc\uc601-sprint10"
Open

[김태영] sprint10#179
csbizz wants to merge 7 commits intocodeit-sprint-fullstack:next-김태영from
csbizz:next-김태영-sprint10

Conversation

@csbizz
Copy link
Collaborator

@csbizz csbizz commented Nov 13, 2024

요구사항

기본 요구사항

공통

  • Github에 위클리 미션 PR을 만들어 주세요.

  • React.js 혹은 Next.js를 사용해 진행합니다.

  • RESTful를 설계하고 백엔드 코드를 변경하세요.

  • (풀스택) 설계한 백엔드 코드에 맞게 프론트엔드 코드를 변경해 주세요.
    https://panda-market-api.vercel.app의 API를 사용한 코드를 본인의 백엔드 API 코드로 변경하세요.

  • (백엔드) 프론트엔드 코드에 맞게 백엔드 코드를 변경해 주세요.

  • 백엔드 코드에 swagger를 추가해 API 명세 문서를 생성해 주세요.

프론트엔드 구현 요구사항

중고마켓 페이지

  • 디폴트 이미지로 처리한 이미지를 실제 Product Get API에서 가져온 이미지로 변경해 주세요.
  • 좋아요 순 정렬 기능을 붙여주세요.
  • 베스트 상품 기능을 추가해 주세요. 베스트 상품은 가장 많이 좋아요를 받은 순으로 PC 기준 최대 4개까지 조회 가능합니다.

상품 등록하기 페이지

  • 상품 이미지 등록 기능을 구현합니다. 파일을 선택해 이미지를 업로드하고, preview를 볼 수 있도록 구현합니다. 이미지는 최대 3개까지만 등록 가능하도록 구현해 주세요.
  • 동일하게 상품 이미지 수정 기능도 추가합니다.
  • 상품 등록 성공 시 중고마켓 페이지로 이동해 주세요.

심화 요구사항

상태코드 (웹 API 관련)

  • 프론트엔드에서는 서버 응답의 상태코드에 따라 적절한 사용자 피드백을 제공합니다.

인증

  • 토큰 기반 방식을 사용할 경우, 만료된 액세스 토큰을 새로 발급하는 리프레시 토큰 발급 기능을 구현합니다.(jwt sliding session 적용)

OAuth를 활용한 인증

  • 구글 OAuth를 사용하여 회원가입 및 로그인 기능을 구현합니다.

###프로젝트 구조 변경

  • 프로젝트의 구조와 복잡성을 관리하기 위해 MVC 패턴이나 Layered Architecture와 같은 설계 방식을 적용해 보세요.

(생략 가능) 자유게시판 게시물 등록

  • 프론트엔드를 Next.js로 Migration 했을 경우에만 진행해 주세요.

  • 게시물 등록 시 이미지 등록 기능을 구현합니다. 파일을 선택해 이미지를 업로드하고, preview를 볼 수 있도록 구현합니다. 이미지는 최대 3개까지만 등록 가능하도록 구현해 주세요.

  • 게시물 등록 시 필요한 필드(제목, 내용 등)의 유효성 검증하는 미들웨어를 구현합니다.

  • multer 미들웨어를 사용하여 이미지 업로드 API를 구현해 주세요.

  • 업로드된 이미지는 서버에 저장하고, 해당 이미지의 경로를 response 객체에 포함해 반환합니다.

주요 변경사항

  • 미션10 시작

스크린샷

멘토에게

@csbizz csbizz requested a review from MCprotein November 13, 2024 02:32
@csbizz csbizz self-assigned this Nov 13, 2024
@csbizz csbizz added 매운맛 🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 진행중 아직 스프린트 미션 제출일이 아닙니다. 새로 커밋된 내용에 대해 코드리뷰 해주세요! labels Nov 13, 2024
Comment on lines +146 to +148
if (!value.trim()) return setTagObj(old => ({ ...old, errMsg: '빈 문자만 입력할 수 없습니다.' }));
if (tags.length >= 5) return setTagObj(old => ({ ...old, errMsg: '태그는 5개까지 입력 가능합니다.' }));
if (tags.includes(value)) return setTagObj(old => ({ ...old, errMsg: '같은 태그가 존재합니다' }));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@csbizz 여기 중복코드가 세개있는데, 조건에따라 errMsg만 다르게 하고 setTagObj는 조건문밖에서 하는게 더 깔끔할거같아요

Copy link

@MCprotein MCprotein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@csbizz 태영님 고생하셨습니다!

@MCprotein
Copy link

@csbizz 앗 merge가 안되는데 충돌만한번 해결해주세요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

매운맛 🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 진행중 아직 스프린트 미션 제출일이 아닙니다. 새로 커밋된 내용에 대해 코드리뷰 해주세요!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants