미션 제출 스프린트 8 - 김윤기#70
Hidden character warning
Conversation
Feat/pkj 5 login migration
Feat: PRJ-6 회원가입 페이지 마이그레이션
- 루트 메타데이터 폴더이름 변경 - 레이아웃으로 적용 - 추후 사용할 판다마켓 api 사용 Refs: PRJ-6
- 유저정보 가져오기 - 유저정보 수정하기 Refs: PRJ-9
Feat: login, refresh-token 라우터 Feat: [PRJ-9] 서비스로직 수정, 회원가입 api라우트 추가 Feat: [PRJ-9] 회원가입 서비스, api라우트 추가 FIX: [PRJ-9] 프로바이저 로직 변경 Fix: [PRJ-9] 폼 로직 추가 Feat: [PRJ-9] 라우트 가드 Design: 모달 디자인 수정 및 아이템페이지
Feat: [PRJ-9] 로그인/회원가입 공통: 페이지 접근 시 accessToken 확인 및 리다이렉트
There was a problem hiding this comment.
🎉 고생하셨습니다
솔직하게 말씀드리면, AI가 작성한 것 처럼 보일 정도로 코드 구성과 주석이 작성 되어있어서 크게 문제가 되거나 수정, 최적화가 필요한 코드가 많이 보이진 않았어요.
들여쓰기나 네이밍 규칙도 정교하게 되어있구요.
허스키 기반 협업 대비 설정도 그렇고.. 한 가지 의아한 건 bun과 npm이 혼용되고 있다는 점이 살짝 걸리네요. 어차피 package.json을 기반으로 생성되는 요소이니 당장은 큰 문제가 있진 않을 것 같습니다.
그 외에 DB 내 일부 필드들 자료형도 다 생각이 있으셔서 그렇게 구성 해 놓으신 것 같아서, 딱히 피드백 드릴만한 부분이 없어보여요. (Price가 String으로 설정되어 있다던지... 이런 경우 통계나 필터링에 이익이 없을 수 있어요)
서버액션 관련 부분만 어찌든 수정하면 당장 퍼블리싱해도 될 것 처럼 보이는 코드입니다.
고생하셨습니다 😊
| if (!commentId) return { success: false, message: 'Invalid input' }; | ||
| const validateSchema = updateCommentSchema.parse(data); | ||
|
|
||
| await prisma.comment.update({ |
There was a problem hiding this comment.
☕ Thinking...
기능 상 문제는 없습니다,
다만, article-service 파일같이 다른 코드에서는 Next route 통해서 API 기반 통신을 진행하고 있더라구요.
여기에서만인지 서버 액션을 사용하고 있는데.. 통일성을 위해 API 방식과 서버액션 중 한 가지를 선택하는 게 좋지 않을까 싶어요.
그러면 백엔드만 수정해서 핸들링하기 편하기도 하고,
책임 분산 및 유지보수하는 데 큰 도움이 될 것 같답니다 😊
There was a problem hiding this comment.
코드잇 api 서버를 사용하지않고 만들어보고 싶어서 했는데, 특유에 폴더구조때문에 많이 헷갈리기 시작했습니다...
이번에 좀 분량이 많이 길다고 생각했는데. 코드리뷰 해주셔서 감사합니다.
There was a problem hiding this comment.
코드잇 api 서버를 사용하지 않고 직접 만든 건 너무 잘 하신 것 같아요.
백엔드를 담당하는 요소는 모두
api/폴더 아래에 통일시켜서, route 요소로만 개발한다
이런 규칙을 정해 놓으시면 나중에 덜 헷갈릴 수 있을 것 같아요.
특히 지금처럼 FE 코드에서 서버액션을 사용하면,
지금처럼 헷갈리는 문제가 계속될 수도 있을 것 같네요 🥹
| where: { id: parseInt(id) }, | ||
| }); | ||
|
|
||
| updateTag('comment'); |
There was a problem hiding this comment.
☕ Thinking...
바로 위에서 만약 서버액션을 사용하지 않기로 했다면, updateTag는 더 이상 동작하지 않을 겁니다.
제 기억 상 서버액션 내에서만 사용이 가능한 메서드라서...
이런 경우 revalidateTag를 사용 해 보시면 좋을 것 같아요.
같은 캐시 무효화 기법이랍니다.
https://nextjs-ko.org/docs/app/api-reference/functions/revalidateTag
| const validateData = articleFormSchema.parse(body); | ||
| const { title, content } = validateData; | ||
|
|
||
| const FAKE_ID = 72; |
There was a problem hiding this comment.
🪛 Fix Point
제 생각엔 누락된 것 같긴 한데..
로그인 기능을 만들어 둔 만큼, FAKE_ID를 정상 ID로 바꿔주면 완성도가 더 올라갈 것 같아요 🥹
요구사항
기본 요구사항
공통
Github에 스프린트 미션 PR을 만들어 주세요.
Next.js를 사용해 진행합니다.
자유 게시판 페이지
게시글 목록에서 드롭다운을 사용하여 "최신 순"으로 정렬할 수 있도록 합니다.
본인이 이전 미션에서 생성한 게시글 목록 조회 API를 활용해 GET 메서드로 데이터를 가져옵니다.
게시글 제목에 검색어가 일부 포함되면 해당 게시글을 검색할 수 있도록 합니다.
이미지는 디폴트 이미지로 프론트엔드에서 처리해 주세요.
게시글 닉네임 및 좋아요 개수 역시 임의값으로 프론트엔드에서 처리해주세요.
베스트 게시글은 최신순 3개 게시글을 요청으로 데이터를 가져와 구현해주세요.
자유게시판 페이지에서 특정 게시글을 클릭하면 해당 게시물의 상세 페이지로 이동합니다.
게시글 등록 & 수정 페이지
각 input 필드에 정확한 placeholder 값을 입력합니다.
모든 input 필드에 값을 입력하면 '등록' 버튼이 활성화됩니다.
본인이 이전 미션에서 생성한 게시글 생성 API를 활용해 POST 메서드로 게시글을 등록합니다.
'등록' 버튼을 누르면 해당 게시물 상세 페이지로 이동합니다.
게시글 수정 페이지 UI는 게시글 등록 페이지와 동일합니다.
본인이 이전 미션에서 생성한 게시글 상세 API의 PATCH 메소드를 사용하여 게시물을 수정합니다.
게시글 상세 페이지
심화 요구사항
공통
마이그레이션에 상당한 시간이 소요될 수 있으므로 진행을 권장하지 않습니다.
--- 나머지 추가 사항은 다음 미션때 준비하겠습니다. 👾