ArtTalkTalk은 신진 작가들이 자신의 작품을 전시하고 피드백을 받으며 자유롭게 소통할 수 있는 온라인 플랫폼입니다. 작품 구매 및 나눔, 기부 기능도 지원하여 예술 생태계 형성을 목표로 합니다.
담당한 기능
공통 컴포넌트 개발, 마이 페이지 / 프로필 수정 페이지 / 계정 정보 페이지 구현, 탈퇴 기능 구현, 댓글 CRUD 구현
Next.js의 Parallel Routes 기능을 활용하여 내 계정 페이지 내에서 계정 편집/계정 삭제 탭 전환 UI를 구현했습니다. URL은 유지하면서 각 탭에 대응하는 페이지 컴포넌트를 병렬로 렌더링할 수 있도록 구성했습니다.
@editProfile, @deleteProfile 구조를 통해 서로 다른 페이지 컴포넌트를 독립적으로 병렬 구성할 수 있도록 디렉토리 구조를 설계layout.tsx에서 editProfile, deleteProfile을 props로 받아 탭 전환 시 필요한 컴포넌트만 조건 렌더링되도록 구현하여 라우팅 성능과 사용자 경험을 향상시킴react-hook-form의 Controller를 사용해 입력 상태 관리와 유효성 검사를 통합하고 성능을 개선했습니다.
Controller를 통해 외부 컴포넌트와의 폼 연동 로직 간소화고화질 PNG 이미지로 인해 느려졌던 초기 페이지 로드 성능을 최적화했습니다.
Image 컴포넌트에 formats: ['image/avif', 'image/webp'] 옵션을 적용하여 자동 포맷 변환 및 브라우저 최적 형식 제공lazy loading, placeholder 기능을 함께 사용해 사용자 체감 성능 향상API 요청 최적화를 통해 성능 향상 및 데이터 동기화 효율화했습니다.
React Query를 도입하여 API 응답 캐싱, 중복 요청 방지, 자동 리페칭 구현계정 관련 핵심 페이지(Mypage, 프로필 수정, 회원 탈퇴 등 사용자 계정 기능)를 일관된 UI/UX로 구축했습니다.
모바일, 태블릿, 데스크탑 환경에서도 일관된 사용자 경험을 제공하는 반응형 UI를 구현했습니다.
Tailwind CSS를 활용한 반응형 레이아웃 및 유연한 그리드 시스템 구축📌 문제 배경
프로젝트에서 다양한 입력 폼을 처리할 때 각 입력 필드의 상태를 useState로 개별적으로 관리하고 유효성 검사 로직을 직접 구현했습니다. 그러나 입력 필드가 많아질수록 코드의 복잡도가 증가하고 중복 코드가 발생하여 가독성과 유지보수성이 저하되었습니다. 또한 불필요한 리렌더링이 발생하면서 폼의 성능 저하가 우려되는 문제도 있었습니다.
🔍 원인 분석
useState를 이용한 개별 상태 관리로 인한 코드 중복과 복잡도 증가🛠 해결 과정
react-hook-form을 활용하여 각 입력 필드의 상태를 중앙에서 관리하고 불필요한 useState 사용을 줄여 코드 구조를 단순화Controller를 통해 입력 값과 폼 상태를 효과적으로 연동하고 이벤트 핸들러를 간결하게 처리✅ 결과
react-hook-form 도입으로 유효성 검사 로직을 일관되게 유지하며 가독성 향상🧠 배운 점
폼 관리가 이렇게 복잡할 줄 몰랐습니다. 처음에는 useState로 각 필드를 관리하는 게 직관적이라고 생각했는데 입력 필드가 늘어날수록 코드가 스파게티가 되었습니다. react-hook-form을 도입하면서 가장 인상적이었던 건 불필요한 리렌더링이 줄어든 점이었습니다. 이전에는 하나의 필드만 변경해도 다른 필드들까지 리렌더링되는 경우가 많았는데 Controller를 사용하니 해당 필드만 업데이트되니까 성능 차이를 바로 체감할 수 있었습니다. 라이브러리 하나로 이렇게 개발 경험이 달라질 수 있다는 걸 배웠고 처음부터 적절한 도구를 선택하는 것도 중요한 개발 역량이라고 생각하게 되었습니다.
📌 문제 배경
프로젝트 초기에는 프론트엔드, 백엔드, 디자이너 간의 원활하지 않은 소통으로 인해 작업 지연 및 요구사항 전달 문제가 발생했습니다. 각 팀의 작업 타임라인과 우선순위가 일치하지 않아 협업이 비효율적으로 이루어졌으며 즉각적인 피드백이 어려워 개발 과정에서 요구사항 변경이 생길 때 대응 속도가 느려졌고 프로젝트 일정에 부정적인 영향을 미쳤습니다.
🔍 원인 분석
🛠 해결 과정
Block / Done / To-do 형식으로 매일 각자의 업무 상황을 공유하며, 필요한 협업을 빠르게 파악하고 문제를 조기에 해결✅ 결과
🧠 배운 점
이 프로젝트에서 가장 큰 배움 중 하나가 바로 협업의 중요성이었습니다. 처음에는 각자 맡은 부분만 잘하면 된다고 생각했는데 실제로는 팀 간 소통이 프로젝트 성공의 핵심이었습니다. 코어타임을 19-22시로 정하고 나서 즉각적인 피드백이 가능해진 게 정말 큰 변화였습니다. 특히 데일리 스크럼에서 Block/Done/To-do 형식으로 상황을 공유하니까 누가 어디서 막혀있는지 바로 파악할 수 있어서 빠르게 도움을 주고받을 수 있었습니다. GitHub Discussions를 활용한 비동기 소통도 효과적이었고 이런 체계적인 협업 환경이 결과적으로 프로젝트 품질 향상으로 이어진다는 걸 몸소 체험했습니다.