Resume

전미혜 | Portfolio

Contact

Email: jeonmye@gmail.com
Phone: 01086674402

프로젝트

휴대폰 개통 안내 웹서비스

휴대폰 개통 안내와 실시간 상담 연결을 돕는 정적 웹사이트입니다.
2024.6.24 ~ 현재
Frontend 1명

구현한 기능

Webpack과 Babel을 사용한 개발환경 구축
CRA 없이 Webpack과 Babel을 처음부터 직접 설정하여 프로젝트를 구축
사용자 경험 개선
Route의 React.lazy와 Suspense 기능을 적용하여 초기 렌더링 최적화
webpack-bundle-analyzer 로 분석하여 모듈별로 chunk로 분리 후 react lazy import
검색엔진 최적화(SEO)
CSR 환경에서 SEO를 개선하기 위해 react-snap, react-helmet을 사용 메타 태그를 동적으로 설정
배포
AWS S3 , CloudFront 를 사용하여 정적 웹사이트 배포
뷰포트별 반응형 웹, 레이아웃 개발
window 객체 내 Viewport 정보를 활용하여 현재 화면의 상태인 isMobile값을 반환하는 useViewport 훅 제작
메인페이지
개통방법 페이지
구글 플레이 / 애플 스토어 앱설치 연동
상담 문의 페이지

사용 기술

React : 본인의 기술 습득 수준을 고려했으며, 풍부한 생태계로 생산성을 높이기 위해 선택하였습니다.
Styled-Components : CSS-in-JS의 이점을 활용해 개발 생산성을 높이기 위해 선택했습니다.

Happi-Day

생일 카페와 아이돌 굿즈 공구와 같은 이벤트 홍보를 위한 아이돌 팬덤 플랫폼입니다.
2023. 12 ~ 2024.5
Frontend 4명, Backend 4명

내가 기여한 부분

마이페이지 제작
react-hook-form의 validate와 pattern속성을 이용하여 올바르지 않은 정보를 입력했을 때, error mesaage 표시
react-query를 활용하여 프로필 수정, 회원 탈퇴, 주문 취소, 아티스트 구독/취소 api 연동
react-query의 useInfiniteQuery로 무한스크롤 구현
쿼리파라미터로 받아온 아티스트 유형에 따라 다른 UI가 노출되도록 구현
공통 컴포넌트 / custom hooks 제작
react-qeury 도메인별 커스텀 쿼리를 정의하고 구조화하여 팀원들에게 공유
useRef를 사용해 관찰하려는 element가 현재 viewport에 진입했는지의 상태를 반환하는 IntersectionObserver 커스텀 훅 제작
확장성을 고려한 Modal 컴포넌트 제작
관리자 페이지 제작
react-query를 활용하여 아티스트 추가, 아티스트 수정 api 연동
프론트엔드 기술 환경 구성
전체 디렉터리 구조 설계
Axios의 인터셉터, 인스턴스를 활용하여 네트워크 요청 모듈화
프로필 관리
나의 게시물
아티스트 구독 페이지
팀 수정

사용 기술

React - 다이나믹 UI의 SPA 웹페이지를 만들기 위해 사용하였습니다.
TypeScript: 컴파일에서의 에러 캐치로 디버깅을 쉽게 하고 프로젝트의 생산성과 안정성을 높이는 장점이 있어 사용했습니다.
NextJS 13 - App Router: SEO 최적화, metadata 간편 생성, 서버 컴포넌트를 사용하기 위해 App Router를 채택했습니다.
React-Query: server state와 client state 분리하고, 캐싱 처리를 간단하게 해주는 이점이 있어 사용했습니다.
Recoil: 간단한 사용법과 낮은 러닝커브로 프로젝트에서 Redux보다 더욱 간단하게 전역 상태를 관리할 수 있고 유지보수가 쉽다고 생각하여 사용하였습니다.
Tailwind CSS: 유틸리티 기반 CSS 프레임워크로 SSR방식의 nextjs와 호환성을 높히기 위해 사용했습니다.

Plead

변호사와 의뢰인 간 원활한 소통과 자료공유를 위한 서비스로, 리걸 테크 스타트업 ‘PLEAD’에서 협업한 프로젝트입니다.
23.09.25 ~ 23.10.27 (4주)
Frontend 1명, Backend 3명

내가 기여한 부분

변호사 사이트(플리드) 개발
기존 통합되어 있던 사건을 없애고 개인 회생 사건으로 분리하여 컴포넌트화
사건Id값을 Recoil을 이용해 전역 상태로 받아와 페이지를 구현
파일 업로드, 드래그하여 파일 순서 변경, 휴지통, 영구 삭제, 파일 미리 보기 구현 (기존 기능을 변형)
변호사가 confirm 한 파일에 대해서 의뢰인이 파일을 더 이상 수정, 삭제를 못하도록 권한 설정
의뢰인 사이트(영쩜일) 개발
의뢰인의 결제 여부에 따라 다르게 보여지는 UI 구현
사건 증거 파일 교환 페이지 UI/UX 구현

사용 기술

NextJS 13 - Page Router : 파일 시스템 기반 라우팅을 경험해볼 수 있었습니다.
React-Query: 기존 구현되어 있는 useQuery, useMutation 커스텀 훅을 이해하고 재사용해보면서 react-query에 대한 이해도를 높일 수 있었습니다.
TypeScript: 처음엔 타입 지정을 위해 시간이 많이 소요됐지만, 협업에 있어 생산성이 향상됨을 경험할 수 있었습니다.
Chakra UI: props 기반의 간단하고 모듈적인 점이 장점으로 다가왔습니다.
Recoil : useRecoilState, useRecoilValue 기능으로 global state를 사용해볼 수 있었습니다.
MonoRepo : 공통으로 사용되는 리소스를 자유롭게 사용할 수 있었습니다. 특히 기존에 구현되어있던 요청과 응답 DTO를 참고하여 서버와의 통신 정의를 보다 명확히 할 수 있었습니다.
Swagger: 백엔드와 사전 논의한 파라미터와 네이밍이 다를때 바로 체크할 수 있다는 점이 좋았고, 일반적인 문서보다 효율적임을 느꼈습니다.

GypPT

트레이너의 맞춤 PT를 집에서도 받아볼 수 있는 서비스입니다.
23.09.04 ~ 23.9.22 (3주)
Frontend 4명, Backend 4명

내가 기여한 부분

트레이너 프로필 페이지
IntersectionObserver를 사용하여 무한스크롤 구현
운동 달성 체크리스트 페이지
유저의 멤버십 등급(브론즈, 실버, 골드)에 따른 접근 권한
Checkbox 구현
현재 요일을 표시하는 주간 캘린더 기능 구현
S3를 이용한 식단 사진 업로드 / 모달 컴포넌트
상담 페이지
글 / 댓글 작성, 수정, 삭제
기획
Miro 툴을 활용한 User flow 작성
기능 요구 정의서 작성 기여

사용 기술

React - 리액트 렌더링 동작과 과정에 대해 탐구해 볼 수 있었습니다.
SCSS - 모듈화, Nesting, 변수 등을 사용하여 CSS의 한계를 보완하였습니다.

KREAM

한정판 거래 플랫폼 ‘KREAM’을 클론한 서비스.
23.08.21 ~ 23.09.01 (2주)
Frontend 2명, Backend 4명

내가 기여한 부분

스크럼 프로세스를 통해 프로젝트를 관리
주기적으로 목표를 정하고 스프린트 기간을 설정
매일 10분마다 데일리 스탠드업 회의를 하며 각 파트마다 진행상황을 공유
스프린트가 끝나면 회고를 통해 잘한 점과 개선할 점을 도출하여 다음 스프린트때 반영
로그인 / 회원가입 페이지 제작
이용약관 동의, 아이디와 비밀번호 유효성 검사를 진행
react-router-dom을 활용하여 로그인 여부에 따른 라우팅 처리
상품 목록 페이지 제작
쿼리스트링을 사용하여 필터, 정렬 기능 구현
IntersectionObserver를 사용하여 무한스크롤 구현
상품 상세 페이지 제작
신발 사이즈 선택 모달 컴포넌트 구현
선택한 신발 사이즈에 따라 관련된 데이터 (table data, 평균 거래가, 즉시 판매가, 즉시 구매가) 가 동적으로 업데이트되도록 구현
현재 체결 상태를 보여주는 Table 구현
JWT 인증 기반으로 로그인 여부 확인를 확인하고 조건부로 Table이 렌더링 되도록 구현
회원가입
로그인
상품 목록 (정렬 기능)
상품 상세페이지

사용 기술

React - JSX 문법을 익히고 컴포넌트 기반의 구현 방식을 경험하기 위해 사용했습니다.
SCSS - CSS를 보다 편리하게 작성하기 위해 사용했습니다.