Skip to content

[신민준] Sprint 11#153

Merged
Irelander merged 50 commits intocodeit-sprint-fullstack:next-신민준from
MinJun916:release-v2
Dec 1, 2025
Merged

[신민준] Sprint 11#153
Irelander merged 50 commits intocodeit-sprint-fullstack:next-신민준from
MinJun916:release-v2

Conversation

@MinJun916
Copy link
Collaborator

@MinJun916 MinJun916 commented Nov 26, 2025

요구사항

기본 요구사항

공통

  • Github에 스프린트 미션 PR을 만들어 주세요.
  • React 및 Express를 사용해 진행합니다.
  • TypeScript를 활용해 프로젝트의 필요한 곳에 타입을 명시해 주세요.
  • any 타입의 사용은 최소화해 주세요.
  • 복잡한 객체 구조나 배열 구조를 가진 변수에 인터페이스 또는 타입 별칭을 사용하세요.
  • Union, Intersection, Generics 등 고급 타입을 적극적으로 사용해 주세요.
  • 타입 별칭 또는 유틸리티 타입을 사용해 타입 복잡성을 줄여주세요.
  • 타입스크립트 컴파일러가 에러 없이 정상적으로 작동해야 합니다.

프론트엔드

  • 기존 React(혹은 Next) 프로젝트를 타입스크립트 프로젝트로 마이그레이션 해주세요.
  • TypeScript를 활용해 프로젝트의 필요한 곳에 타입을 명시해 주세요.

Comment

  • 기존 JS Next.js, module.scss 시스템에서 TS Next.js, tailwind css 시스템으로 마이그레이션 진행하였습니다.
    • 마이그레이션 과정에서 완전히 새로운 프로젝트로 파일을 생성하여 진행하였습니다.
  • 이미지 관련 기능들은 스프린트 12에서 AWS 와 함께 구현할 예정입니다.

feat: ProductDetailPage 파일 생성
chore: remove package-lock.json for PR
chore: install package-lock.json for PR
@MinJun916 MinJun916 changed the title Release v2 [신민준] Sprint 11 Nov 26, 2025
@MinJun916 MinJun916 requested a review from Irelander November 26, 2025 02:13
@MinJun916 MinJun916 self-assigned this Nov 26, 2025
@MinJun916 MinJun916 marked this pull request as ready for review November 28, 2025 09:24
Copy link
Collaborator

@Irelander Irelander left a comment

Choose a reason for hiding this comment

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

민준님 코드 처음 보는데 구조도 깔끔하고 코드도 가독성 좋게 잘 작성하시는데요 ? 실력자의 냄새가 납니다 ~ ㅎㅎ

이번 스프린트 PR에서는 아래의 내용만 조금 더 살펴보면 좋을꺼 같았어요 ㅎㅎ

  1. 타입 추론 강화: React Query 훅(useCreateArticle)을 만들 때 제네릭을 명시해주면, 사용하는 컴포넌트에서 데이터와 에러 타입을 더 명확하게 알 수 있어 개발 경험이 좋아집니다.
  2. 앱 초기화 로직 보완: AuthBootstrapper에서 토큰이 없을 때 단순히 리턴해버리면 로딩 상태가 풀리지 않아 앱이 멈춘 것처럼 보일 수 있습니다. 토큰이 없더라도 로딩 상태를 종료(markUserLoaded)해주는 처리가 필요해요.
  3. 폼 관리: ArticleForm에서 useState로 폼을 관리하고 있는데, 이미 설치된 react-hook-form을 활용하면 렌더링 최적화와 코드 간소화 효과를 볼 수 있을 거예요.

스프린트 마지막까지 화이팅입니다! 이번 스프린트 미션도 고생많으셨어요 ㅎㅎ

try {
const token = getAccessToken();

if (!token) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

토큰이 없을 때도 로딩 상태를 완료로 표시해야, 이후의 인증 가드(AuthGuard) 로직이 정상적으로 동작할것 같아요!

import { useRouter } from 'next/navigation';
import { useEffect, useState } from 'react';

const ArticleForm = ({ articleId = '' }: { articleId?: string }) => {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Props 타입을 인라인으로 작성하기보다 interface로 분리하면 가독성과 재사용성이 좋아져요!

import { useMutation } from '@tanstack/react-query';
import { createArticle, updateArticle } from '@/services/article.service';

export const useCreateArticle = () => {
Copy link
Collaborator

Choose a reason for hiding this comment

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

useMutation의 제네릭 타입을 명시해주면 컴포넌트에서 사용할 때 data나 error의 타입 추론이 훨씬 강력해집니다.

export const useCreateArticle = (): UseMutationResult<ArticleResponse, Error, CreateArticleParams> => { ... }

@Irelander Irelander merged commit 7e52b44 into codeit-sprint-fullstack:next-신민준 Dec 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants