juhee
안녕하세요, 코드로 그림 그리는 것을 좋아하는 프론트엔드 개발자 서주희입니다. 웹의 시각적 요소와 인터랙션을 결합하여 사용자가 즐길 수 있는 경험을 만드는 데 매력을 느끼며 동료들과 함께 즐겁게 개발합니다.
introduction
juhee
안녕하세요, 코드로 그림 그리는 것을 좋아하는 프론트엔드 개발자 서주희입니다. 웹의 시각적 요소와 인터랙션을 결합하여 사용자가 즐길 수 있는 경험을 만드는 데 매력을 느끼며 동료들과 함께 즐겁게 개발합니다.
experience
예이랩스Front-End2022.06 ~ 2024.06
골프존Front-End2021.06 ~ 2022.06
mbti
istj
education
경기대학교컴퓨터공학부2016.03 ~ 2021.02
study
2022.06 ~ 진행중
contact
github
https://github.com/maywngmlblog
https://velog.io/@sjuhee97/postsskills
Language
Framework/Library
Database
Version Control
Collaboration Tools
01. 가상자산 투자 커뮤니티 웹
Next.js
React
HTML
CSS
TypeScript
Tailwind CSS
MongoDB
Wagmi
GSAP
Overview
블록체인 기술을 활용한 가상 자산 투자 커뮤니티 서비스의 초기 버전을 개발했습니다.
Details
해당 프로젝트에서는 NFT 구매 과정을 간소화하고, 사용자 조작을 최소화하여 직관적인 구매 경험을 제공하는 데 중점을 두었습니다.
NFT 구매를 위해서는 화이트리스트 대상 여부, 추천인 코드 유효성, 구매 가능 수량 확인 등의 사전 검증 절차가 필요했습니다. 이를 단계별로 진행할 때 사용자 이탈 가능성이 높다고 판단해, 세 가지 검증을 단일 버튼 클릭으로 순차 실행하는 UX를 설계하고 구현했습니다. 이로써 클릭 수를 줄이고 사용자 진입 장벽을 낮출 수 있었습니다.
개발 과정에서는 승인 트랜잭션이 완료되기 전에 민팅 트랜잭션이 먼저 실행되는 문제가 발생했습니다. 프론트엔드에서는 await를 사용해 순차 호출했지만, 블록체인 네트워크에서 승인이 완료되기 전에 민팅이 처리되는 사례가 확인되었습니다. 이를 해결하기 위해 승인 트랜잭션의 진행 상태를 추적하는 로직을 추가하고, 승인 완료 이후에만 민팅이 실행되도록 개선했습니다.
또한, 지갑 연결, 스마트 컨트랙트 호출, REST API 등 각 인터페이스의 응답 형식이 상이해 일관된 에러 처리가 어려웠습니다. 이를 해결하기 위해 공통 에러 객체를 정의하고, 모든 catch 블록에서 동일한 형식으로 가공했습니다. 백엔드 역시 같은 포맷으로 에러를 반환하도록 수정해, 클라이언트와 서버 간 예외 처리 구조를 통일했습니다.
API 명세 관리 측면에서는 문서와 실제 구현 간 불일치가 자주 발생하는 문제가 있었습니다. 이를 개선하기 위해 Swagger를 도입하여 API 명세 작성과 테스트 환경을 통합하고, 협업 효율성을 높였습니다.
또한, 실시간 NFT 판매량 정보 표시 영역으로 인해 발생하던 불필요한 리렌더링을 방지하기 위해 해당 영역을 별도 컴포넌트로 분리하고 상태 관리를 최적화하여 렌더링 성능을 개선했습니다.
Key Achievements & Results
복잡한 검증 절차를 단일 클릭으로 통합하여 NFT 구매 흐름을 간소화하고 사용자 이탈 가능성 감소
02. ape universe
Next.js
React
HTML
CSS
TypeScript
Tailwind CSS
MongoDB
Wagmi
GSAP
Overview
BAYC 홀더와 창작자의 협업을 지원하는 웹 서비스를 개발했습니다. (APE UNIVERSE는 Yuga Labs로부터 MBA 라이센스를 부여받은 프로젝트입니다.)
Details
해당 프로젝트에서는 사용자 경험 중심의 UI 구현과 지갑 연동 안정화에 집중했습니다.
UI 측면에서는 GSAP를 활용해 몰입감 있는 애니메이션을 구현했으며, 애니메이션 로직은 유지보수성을 고려해 설계했습니다. 특히 행성 애니메이션의 경우, 초기에는 모든 행성을 하나의 애니메이션으로 묶는 구조였기 때문에 행성 개수가 변경될 때마다 로직을 수정해야 했고, 크기 조정도 어려워 유지보수성이 낮았습니다. 이를 개선하기 위해 각 행성에 개별 애니메이션을 적용하고 진행도를 조정하는 방식으로 리팩토링했습니다. 그 결과, 행성 개수가 변경되어도 변수 하나만 수정하면 되는 구조로 단순화하고 유지보수성을 높였습니다. 또한 Swiper와 GSAP를 함께 사용해 섹션 슬라이드 전환과 애니메이션 효과가 자연스럽게 이어지도록 구성했습니다.
지갑 연동은 Wagmi를 활용해 다양한 블록체인 지갑과의 연결을 안정적으로 구현했습니다. 개발 중 WalletConnect 사용 시, 지갑을 반복해서 연결하거나 해제할 때 오류가 발생하는 문제가 있었습니다. 콘솔 로그 분석 결과 로컬 스토리지에 지갑 세션의 암호화 키가 없거나 일치하지 않을 때 문제가 발생하는 것으로 파악했습니다. 이에 지갑 연결 해제 시 로컬 스토리지를 초기화하는 방식으로, 일시적으로 대응했고, 이후 Wagmi 라이브러리의 버전을 업그레이드해 해당 문제를 최종적으로 해결했습니다.
2023년 11월에는 Cloudflare 데이터 센터 정전으로 인해 영상 재생이 불가능해지는 장애가 발생한 적이 있습니다. 이때, YouTube 임베드를 활용해 콘텐츠를 즉시 대체함으로써 사용자 경험과 서비스 품질을 유지했습니다.
Key Achievements & Results
복잡한 애니메이션 구조 리팩토링으로 유지보수 시간 절감
03. artivist
Next.js
React
HTML
CSS
TypeScript
Tailwind CSS
Redux Toolkit
MongoDB
GSAP
Overview
전시, 작가 정보 등을 전달하는 브랜드 중심의 공식 웹사이트를 개발했습니다.
Details
프론트엔드와 백엔드 전반을 담당하며, UI 애니메이션 구현, 컴포넌트 리팩토링, 데이터 연동 자동화 등 여러 영역에서 개선을 주도했습니다.
먼저, 스크롤에 따라 이미지를 시퀀스 형태로 보여주는 애니메이션을 구현해 시각적 몰입도를 높였습니다. 또한, 리팩토링도 진행했습니다. 초기에는 언어 선택 Popper 영역의 노출 상태와 제어 함수를 상위 컴포넌트에서 생성해 하위로 전달하는 구조였습니다. 이에 따라 props 전달이 과도해지고 컴포넌트 간 의존성이 증가하는 문제가 있었습니다. 이를 개선하기 위해 노출 로직과 외부 클릭 감지 처리를 하위 컴포넌트로 이동시켜 구조를 단순화하고 유지보수성을 높였습니다.
백엔드 개발은 Next.js API Routes와 MongoDB, Mongoose를 활용해 유연한 스키마로 구성했습니다. 특히, 신청 데이터를 팀에서 사용 중이던 Google Sheets와 자동으로 연동되도록 설계하여 어드민 툴 없이도 실시간 데이터 공유가 가능하도록 구현했습니다.
개발 서버에 배포한 후에 멤버십 신청 API에서 간헐적으로 500 에러가 발생하는 문제가 있었습니다. 원인을 분석한 결과, getServerSideProps에서 연결한 DB가 페이지 장기 비활성 시 연결이 끊기며 타임아웃 오류가 발생하는 것이었습니다. 이를 해결하기 위해 DB 연결 시점을 API 요청 시점으로 변경해 문제를 안정적으로 해결했습니다.
Key Achievements & Results
세련된 애니메이션 및 UI 구현으로 작가 계약 체결률 75% 달성
04. 산타 우체통
Next.js
React
HTML
CSS
TypeScript
Tailwind CSS
TanStack Query
AWS Lambda
MongoDB
Overview
AI 산타에게 편지를 쓰고, 크리스마스에 특별한 답장을 받을 수 있는 서비스입니다.
Details
해당 프로젝트는 지인들에게 소소한 크리스마스 선물을 전하기 위해 기획한 서비스로 기획부터 디자인, 개발까지 전 과정을 혼자 수행했습니다.
잘못된 이메일 주소 입력을 방지하기 위해 JWT 토큰과 Nodemailer를 활용한 이메일 인증 기능을 구현했습니다. 또한, 산타의 답장은 OpenAI API를 통해 자동 생성하고, 따뜻한 위로와 공감을 담기 위해 칭찬, 공감, 격려 중심의 프롬프트를 설계했습니다.
예약된 메일이 안정적으로 전송될 수 있도록 AWS Lambda와 EventBridge를 활용해 예약 발송 기능을 구현했습니다. 초기에는 Vercel의 Cron Job을 고려했지만, 무료 플랜에서 작업 실행 시간이 10초로 제한된다는 점을 확인하고 AWS로 전환했습니다.
약 100건의 예약 메일 발송 테스트를 진행하며 안정성을 검증한 뒤 서비스를 배포했습니다. 이후, 사용자 요청을 반영하여 '내 편지 확인' 페이지와 편지 저장 기능을 추가했으며, 안내 메일을 통해 사용자의 만족도를 더욱 높일 수 있도록 개선했습니다.
Key Achievements & Results
5일 동안 방문자 수 515명, 참여자 수 63명 달성