React 18 기반 SPA 구조로 관리자 웹 화면을 구성하고, 컴포넌트 단위로 화면을 모듈화하여 재사용성을 높였습니다.
React Router를 사용해 인증 화면과 서비스 화면을 분리하고, 레이아웃 기반 중첩 라우팅과 ProtectedRoute로 접근 제어를 구현했습니다.
Vite를 사용하여 빠르게 실행되는 개발 서버(HMR)와 esbuild 기반의 고속 빌드를 활용해 개발 생산성을 높였습니다.
전역 타입 정의와 API 응답 모델을 TypeScript로 관리하여 런타임 오류를 줄이고, 협업 시 코드 가독성과 유지보수성을 강화했습니다.
가맹점 정보, 상품 정보 등 서버 상태를 React Query로 관리하며, 데이터 특성에 따라 staleTime을 분리 설정해 캐싱과 실시간성을 균형 있게 조절했습니다.
인증 정보, 모달/토스트 노출 상태, 가맹점 ID와 같은 전역 도메인 상태 등을 분리해 관리하여, 가벼운 전역 스토어 구조를 유지했습니다.
복잡한 입력 폼(가맹점 등록, 상품 등록 등)을 React Hook Form으로 관리하고, Zod 스키마로 입력값과 API 요청 데이터를 검증하여 성능 최적화와 타입 안전성을 동시에 확보했습니다.
Tailwind CSS 유틸리티 클래스를 사용하여 관리자 UI를 빠르게 구성하고, 공통 컴포넌트에서도 일관된 디자인 토큰을 적용했습니다.
사내 공통 UI 패키지를 별도 라이브러리로 분리해 버튼, 모달, 테이블 등 컴포넌트를 재사용하고, 가맹/슈퍼 관리자 웹의 디자인 일관성을 확보했습니다.
FullCalendar(core / daygrid / interaction)를 사용해 매출·정산 내역 등을 캘린더 형태로 직관적으로 시각화했습니다.
기간 검색이나 예약일 선택 등 날짜 입력이 필요한 폼에서 사용자가 쉽게 날짜를 선택할 수 있도록 캘린더 UI를 제공했습니다.
배너나 카드 리스트 등 스와이프 가능한 영역에 Swiper를 적용해 슬라이드 기반 UI를 구현했습니다.
매출·정산·예약 데이터를 XLSX 포맷으로 변환하여 사용자가 엑셀 파일로 다운로드할 수 있도록 처리했습니다.
이미지 업로드 시 브라우저 단에서 용량을 압축해 업로드 속도와 서버 저장 공간을 최적화했습니다.
백엔드 개발과 병행하기 위해 MSW로 목 API를 구현하고, 실제 API 호출과 동일한 흐름으로 프론트엔드 기능을 개발·테스트했습니다.
ESLint와 Prettier, 그리고 prettier-plugin-tailwindcss를 적용해 코드 스타일과 품질을 자동으로 정리하고, 팀 내 일관된 코드 규칙을 유지했습니다.
사내에서 구축된 AWS S3·CloudFront 환경에 GitHub Actions를 연동하여 자동 빌드·배포 파이프라인을 구성했습니다.
feat : 기능 추가 (새로운 기능 구현)
fix : 버그 수정
refactor : 리팩토링 (기능 변화 없이 코드 구조 개선)
design : UI 스타일 변경 (CSS 등 화면 요소 수정)
comment : 주석 추가 또는 변경
style : 코드 스타일 수정 (세미콜론, 포맷팅 등: 로직 변경 없음)
docs : 문서 작업 (README, 주석 외 문서 추가/수정/삭제)
test : 테스트 코드 추가·수정·삭제 (로직 변경 없음)
chore : 기타 작업 (빌드 설정, 패키지 관리, assets 등)
init : 초기 프로젝트 설정
rename : 파일 또는 폴더명 변경/이동 (내용 변경 없음)
remove : 파일 또는 폴더 삭제만 수행하는 경우export const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 1000 * 60 * 60, // 1시간
gcTime: 1000 * 60 * 60, // 1시간
retry: 1, // 실패 시 1번 재시도
refetchOnWindowFocus: false, // 창 포커스 시 자동 재요청 방지
},
mutations: {
retry: 0, // 실패 시 재시도 없음
},
},
});