Skip to content

미션 제출 스프린트 8 - 김윤기#70

Merged
devbini merged 97 commits intocodeit-sprint-fullstack:next-김윤기from
rklpoi5678:next-김윤기
Nov 12, 2025

Hidden character warning

The head ref may contain hidden characters: "next-\uae40\uc724\uae30"
Merged

미션 제출 스프린트 8 - 김윤기#70
devbini merged 97 commits intocodeit-sprint-fullstack:next-김윤기from
rklpoi5678:next-김윤기

Conversation

@rklpoi5678
Copy link
Collaborator

@rklpoi5678 rklpoi5678 commented Nov 5, 2025

요구사항

기본 요구사항


공통

  • Github에 스프린트 미션 PR을 만들어 주세요.

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

  • 자유 게시판 페이지

  • 게시글 목록에서 드롭다운을 사용하여 "최신 순"으로 정렬할 수 있도록 합니다.

  • 본인이 이전 미션에서 생성한 게시글 목록 조회 API를 활용해 GET 메서드로 데이터를 가져옵니다.

  • 게시글 제목에 검색어가 일부 포함되면 해당 게시글을 검색할 수 있도록 합니다.

  • 이미지는 디폴트 이미지로 프론트엔드에서 처리해 주세요.

  • 게시글 닉네임 및 좋아요 개수 역시 임의값으로 프론트엔드에서 처리해주세요.

  • 베스트 게시글은 최신순 3개 게시글을 요청으로 데이터를 가져와 구현해주세요.

  • 자유게시판 페이지에서 특정 게시글을 클릭하면 해당 게시물의 상세 페이지로 이동합니다.

  • 게시글 등록 & 수정 페이지

  • 각 input 필드에 정확한 placeholder 값을 입력합니다.

  • 모든 input 필드에 값을 입력하면 '등록' 버튼이 활성화됩니다.

  • 본인이 이전 미션에서 생성한 게시글 생성 API를 활용해 POST 메서드로 게시글을 등록합니다.

  • '등록' 버튼을 누르면 해당 게시물 상세 페이지로 이동합니다.

  • 게시글 수정 페이지 UI는 게시글 등록 페이지와 동일합니다.

  • 본인이 이전 미션에서 생성한 게시글 상세 API의 PATCH 메소드를 사용하여 게시물을 수정합니다.


게시글 상세 페이지

  • 본인이 이전 미션에서 생성한 게시글 상세 API의 GET 메소드를 사용하여 데이터를 가져옵니다.
  • 본인이 이전 미션에서 생성한 게시글 상세 API의 DELETE 메소드를 사용하여 게시물을 삭제합니다.
  • 댓글 input에 값을 입력하면 '등록' 버튼이 활성화됩니다.
  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 POST 메소드로 댓글을 등록합니다.
  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 PATCH 메소드로 댓글을 수정합니다.
  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 DELETE 메소드로 댓글을 삭제합니다.

심화 요구사항

공통

  • 디자인 시안에 따라 반응형 디자인을 구현합니다.
  • (생략 가능) 원한다면 지금까지 진행한 모든 React 코드를 Next.js로 마이그레이션 해주세요.
    마이그레이션에 상당한 시간이 소요될 수 있으므로 진행을 권장하지 않습니다.

--- 나머지 추가 사항은 다음 미션때 준비하겠습니다. 👾

@rklpoi5678 rklpoi5678 requested a review from devbini November 5, 2025 16:00
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 확인 및 리다이렉트
Copy link
Collaborator

@devbini devbini left a comment

Choose a reason for hiding this comment

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

🎉 고생하셨습니다

솔직하게 말씀드리면, 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({
Copy link
Collaborator

Choose a reason for hiding this comment

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

Thinking...

기능 상 문제는 없습니다,
다만, article-service 파일같이 다른 코드에서는 Next route 통해서 API 기반 통신을 진행하고 있더라구요.
여기에서만인지 서버 액션을 사용하고 있는데.. 통일성을 위해 API 방식과 서버액션 중 한 가지를 선택하는 게 좋지 않을까 싶어요.

그러면 백엔드만 수정해서 핸들링하기 편하기도 하고,
책임 분산 및 유지보수하는 데 큰 도움이 될 것 같답니다 😊

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

코드잇 api 서버를 사용하지않고 만들어보고 싶어서 했는데, 특유에 폴더구조때문에 많이 헷갈리기 시작했습니다...
이번에 좀 분량이 많이 길다고 생각했는데. 코드리뷰 해주셔서 감사합니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

코드잇 api 서버를 사용하지 않고 직접 만든 건 너무 잘 하신 것 같아요.

백엔드를 담당하는 요소는 모두 api/ 폴더 아래에 통일시켜서, route 요소로만 개발한다
이런 규칙을 정해 놓으시면 나중에 덜 헷갈릴 수 있을 것 같아요.

특히 지금처럼 FE 코드에서 서버액션을 사용하면,
지금처럼 헷갈리는 문제가 계속될 수도 있을 것 같네요 🥹

where: { id: parseInt(id) },
});

updateTag('comment');
Copy link
Collaborator

Choose a reason for hiding this comment

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

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;
Copy link
Collaborator

Choose a reason for hiding this comment

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

🪛 Fix Point

제 생각엔 누락된 것 같긴 한데..
로그인 기능을 만들어 둔 만큼, FAKE_ID를 정상 ID로 바꿔주면 완성도가 더 올라갈 것 같아요 🥹

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

앗!

@devbini devbini merged commit 264e39e into codeit-sprint-fullstack:next-김윤기 Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants