본문으로 건너뛰기
Business Project

cusmetic

맞춤형 피부타입 진단 및 화장품 추천 서비스

담당 역할
고객용·관리자 페이지 프론트엔드 전체 담당
팀 구성
프론트엔드 1명 · 백엔드 1명
소속 · 의뢰
주식회사 비멕스
진행 기간
2023.10 ~ 2024.01
WebFrontend
cusmetic/landing 작업 이미지 1
cusmetic/skin-type-check 작업 이미지 2
cusmetic/skin-type-result 작업 이미지 3
cusmetic/search 작업 이미지 4
cusmetic/cosmetic-result 작업 이미지 5

· 1 / 5

기여 범위

설문과 진단 결과, 화장품 검색 등 고객용 화면과 관리자 페이지를 포함해 전체 프론트엔드를 담당했습니다. Next.js App Router를 사용하며 개발 환경과 UI를 구성하고, 인증과 API 연동, 서비스 배포를 진행했습니다.

맡은 작업

  • Next.js/TypeScript 기반의 개발 환경 구성과 고객용·관리자 화면 구현
  • Next.js와 서버 사이드 세션을 활용해 인증 상태에 따른 화면 깜빡임 개선
  • NextAuth.js를 활용해 프론트엔드 환경에서 소셜 로그인 구현
  • 검색 상태를 URL 쿼리 스트링으로 관리하여 새로고침이나 링크 공유 시 맥락 유지
  • 검색 디바운스와 무한 스크롤을 적용해 불필요한 API 요청을 줄이고 목록을 이어서 조회할 수 있도록 구현
  • AWS Amplify를 활용한 배포 환경 구성

사용 기술

언어·프레임워크

Next.jsTypeScript

상태·데이터

Recoil

화면·인터랙션

Tailwind CSS

배포·도구

NextAuth
Next.js · NextAuth
세션 기반 인증 화면과 소셜 로그인을 구성했습니다.
URL 쿼리 · 디바운스
검색 맥락을 유지하고 입력 중 불필요한 조회를 줄이도록 적용했습니다.

인증과 검색·목록 처리

  • 인증 상태에 맞는 화면 표시

    클라이언트에서 로그인 여부를 확인하는 동안 화면이 바뀌어 보였습니다. 서버에서 세션을 먼저 확인해 초기 화면부터 인증 상태에 맞는 내용을 표시하도록 했습니다. 소셜 로그인은 NextAuth로 구현했습니다.

  • 검색 조건 유지와 목록 이어보기

    검색 조건을 URL 쿼리로 관리해 새로고침하거나 링크를 공유해도 같은 조건으로 조회하도록 했습니다. 검색 입력에는 디바운스를 적용해 입력 중 발생하는 요청을 줄이고, 무한 스크롤로 목록을 이어서 불러오도록 구현했습니다.

  • 페이지 이동 후 Router Cache의 이전 데이터 표시

    데이터를 변경해도 목록에 바로 반영되지 않고 새로고침해야 갱신되는 문제가 있었습니다. fetch 옵션과 재검증 설정을 조정해도 해결되지 않아 페이지 이동 시 재사용되는 클라이언트 Router Cache를 확인했습니다. 당시에는 페이지 진입 시 router.refresh()로 캐시를 갱신하고 데이터를 다시 받아오도록 처리했습니다.