Skip to main content

Admin 프로젝트 분석 보고서

1. 프로젝트 개요

1.1 기본 정보

  • 프로젝트명: dasee-react-ts-admin
  • 버전: 1.3.5
  • 설명: 다시-리액트-타입스크립트-어드민
  • 라이선스: Only use for softsquared project
  • 개발사: (주)소프트스퀘어드

1.2 프로젝트 목적

  • React TypeScript 기반 관리자 시스템
  • 다시(Dasee) 서비스의 백오피스 관리 도구
  • 사용자, 주문, 콘텐츠, 리뷰 등 종합 관리

2. 기술 스택 분석

2.1 주요 프레임워크

  • React: 18.2.0 (최신 안정 버전)
  • TypeScript: 5.1.3 (최신 버전)
  • React Router DOM: 6.14.2 (SPA 라우팅)

2.2 빌드 시스템

  • Vite: 6.3.5 (최신 고속 빌드 도구)
  • @vitejs/plugin-react: 4.4.1 (React 플러그인)
  • vite-plugin-svgr: 4.3.0 (SVG 컴포넌트 변환)

2.3 상태 관리

  • Recoil: 0.7.7 (Meta에서 개발한 상태 관리 라이브러리)
  • TanStack Query: 5.79.0 (서버 상태 관리)

2.4 UI/스타일링

  • TailwindCSS: 4.1.7 (유틸리티 우선 CSS 프레임워크)
  • @tailwindcss/vite: 4.1.7 (Vite 플러그인)
  • Autoprefixer: 10.4.21 (CSS 벤더 프리픽스 자동 추가)

2.5 개발 도구

  • ESLint: 8.42.0 (코드 품질 검사)
  • Prettier: 2.8.8 (코드 포맷팅)
  • Husky: 8.0.3 (Git hooks)
  • lint-staged: 13.2.2 (스테이징된 파일만 린팅)

2.6 외부 라이브러리

  • 에디터: react-quill-new@3.4.6, quill-table-better@1.1.6
  • 파일 처리: file-saver@2.0.5, xlsx@0.18.5
  • HTTP 클라이언트: axios@1.4.0
  • 날짜 처리: dayjs@1.11.13
  • 알림: react-toastify@9.1.3

3. 소스 구조 분석

3.1 디렉토리 구조

src/
├── apis/ # API 관련 (핸들러, 코어)
├── assets/ # 정적 자원 (이미지, 아이콘)
├── components/ # 재사용 가능한 UI 컴포넌트
├── config/ # 설정 파일 (라우트 등)
├── layout/ # 레이아웃 컴포넌트
├── pages/ # 페이지 컴포넌트
├── state/ # Recoil 상태 관리
└── utils/ # 유틸리티 함수

3.2 주요 페이지 구성

  • account/UserManage: 사용자 관리
  • content/: 콘텐츠 관리 (Guide, Service, Notice)
  • order/: 주문 관리 (Details, Refund)
  • ba/: BA 수리 관리
  • brandrepair/: 브랜드 수리 관리
  • review/: 리뷰 관리
  • restriction/: 제한 설정
  • setting/Admin: 관리자 설정

3.3 아키텍처 특징

  • 컴포넌트 기반: 재사용 가능한 컴포넌트 중심 설계
  • 상태 관리 분리: Recoil을 통한 원자적 상태 관리
  • API 계층 분리: 핸들러별로 API 로직 모듈화
  • 타입 안전성: TypeScript 모듈 타입 정의

4. 특이사항

4.1 상태 관리 패턴

  • Recoil Atoms: 사용자 정보, 토큰 등 전역 상태 관리
  • LocalStorage Effect: 브라우저 새로고침 시 상태 유지
// tokenState.ts
export default atom<Token>({
key: JWT_KEY,
default: initToken,
effects: [localStorageEffect(JWT_KEY)],
});

4.2 빌드 시스템

  • Vite 기반: CRA 대비 빠른 개발 서버 및 빌드
  • Path Alias: @ 별칭을 통한 절대 경로 import
  • TailwindCSS Vite 플러그인: 최신 버전 활용

4.3 인증 시스템

  • 자동 토큰 갱신: DefaultLayout에서 토큰 자동 갱신 처리
  • 토큰 만료 처리: 만료 시 자동 로그인 페이지 리다이렉트

4.4 에디터 기능

  • Rich Text Editor: Quill 기반의 강력한 에디터
  • 테이블 지원: quill-table-better를 통한 고급 테이블 기능
  • 이미지 업로드: 커스텀 이미지 핸들러 구현

5. 장점 (잘 구축된 부분)

5.1 현대적 기술 스택

  • 최신 빌드 도구: Vite를 통한 빠른 개발 환경
  • 최신 TypeScript: 5.1.3 버전으로 최신 기능 활용
  • TailwindCSS 4.x: 최신 버전의 유틸리티 CSS 프레임워크

5.2 효율적인 상태 관리

  • Recoil 활용: Meta에서 개발한 현대적 상태 관리
  • 원자적 상태: 세밀한 상태 관리로 불필요한 리렌더링 방지
  • Local Storage 연동: 새로고침 시에도 상태 유지

5.3 개발 경험

  • 빠른 HMR: Vite의 Hot Module Replacement로 개발 속도 향상
  • 타입 안전성: 엄격한 TypeScript 설정
  • 자동화된 코드 품질: ESLint, Prettier, Husky를 통한 일관된 품질

5.4 컴포넌트 설계

  • 재사용성: Table, Input, Textarea 등 범용 컴포넌트
  • 일관성: TailwindCSS를 통한 디자인 시스템 일관성
  • 접근성: 체계적인 컴포넌트 인터페이스 설계

5.5 API 관리

  • 구조화된 API: 핸들러별로 모듈화된 API 관리
  • 에러 처리: TanStack Query의 글로벌 에러 처리
  • 자동 재시도 비활성화: 관리자 시스템 특성에 맞는 설정

6. 단점 (개선 가능한 부분)

6.1 코드 품질 개선

  • 주석 부족: 복잡한 비즈니스 로직에 대한 설명 부족
  • 에러 처리: 더 세밀한 에러 처리 및 사용자 피드백 필요
  • 테스트 부족: 단위 테스트 및 통합 테스트 코드 부재

6.2 사용자 경험

  • 로딩 상태: 더 세밀한 로딩 상태 관리 필요
  • 에러 피드백: 사용자 친화적인 에러 메시지 개선
  • 접근성: ARIA 속성 및 키보드 네비게이션 개선

6.3 성능 최적화

  • 번들 크기: 일부 라이브러리의 트리 쉐이킹 최적화 필요
  • 메모이제이션: React.memo, useMemo 등 성능 최적화 기법 부족
  • 가상화: 대용량 데이터 테이블의 가상화 미적용

6.4 보안 강화

  • 권한 관리: 페이지/기능별 세밀한 권한 제어 필요
  • 입력 검증: 클라이언트 사이드 validation 강화 필요

7. 단점 (반드시 개선해야 하는 부분)

7.1 보안 취약점

  • 토큰 처리: localStorage에 토큰 저장 시 XSS 취약점
  • API 에러 노출: 상세 에러 정보가 사용자에게 노출될 수 있음

7.2 인증 시스템 문제

  • 토큰 갱신 로직: DefaultLayout에서 매번 토큰 갱신 시도 (불필요한 API 호출)
  • 라우트 보호: 인증이 필요한 라우트와 불필요한 라우트 구분 부족

7.3 코드 품질 문제

  • 하드코딩: 일부 설정값들이 하드코딩되어 있음
  • 타입 안전성: 일부 any 타입 사용으로 타입 안전성 저하

8. 개발 환경 및 배포

8.1 개발 환경 설정

# 개발 서버 실행
npm run dev # development 환경 (포트 3001)
npm run local # local 환경
npm run prod # production 미리보기

# 빌드
npm run build-dev # development 빌드
npm run build-prod # production 빌드

# 코드 품질
npm run lint # ESLint 실행

8.2 환경 변수

  • VITE_API: API 서버 URL
  • Vite의 import.meta.env를 통한 환경 변수 관리

8.3 CI/CD

  • Husky: Git hooks를 통한 커밋 전 품질 검사
  • lint-staged: 변경된 파일만 대상으로 린팅

9. 의존성 분석

9.1 주요 외부 라이브러리

라이브러리버전용도상태
React18.2.0UI 프레임워크안정
TypeScript5.1.3타입 체킹최신
Vite6.3.5빌드 도구최신
Recoil0.7.7상태 관리안정
TailwindCSS4.1.7CSS 프레임워크최신
TanStack Query5.79.0서버 상태최신

9.2 보안 취약점

  • 정기적인 npm audit 실행 필요
  • 의존성 업데이트 시 호환성 테스트 필요

9.3 라이선스

  • 대부분 MIT 라이선스로 상업적 사용 가능
  • 특별한 라이선스 제약 없음

10. 향후 개발 권장사항

10.1 즉시 수정 필요

  1. 보안: localStorage 토큰 저장 방식 개선 (httpOnly 쿠키 고려)
  2. 인증: 불필요한 토큰 갱신 API 호출 최적화
  3. 라우트 보호: 인증 필요 라우트와 공개 라우트 명확히 구분

10.2 단기 개선 사항 (1-2개월)

  1. 테스트: Jest, React Testing Library를 이용한 테스트 코드 작성
  2. 에러 처리: 글로벌 에러 바운더리 및 세밀한 에러 핸들링
  3. 접근성: ARIA 속성 추가 및 키보드 네비게이션 개선

10.3 중기 개선 사항 (3-6개월)

  1. 권한 관리: RBAC(Role-Based Access Control) 시스템 구축
  2. 성능 최적화: 가상화, 메모이제이션, 번들 최적화
  3. 모니터링: Sentry 등 에러 모니터링 도구 도입

10.4 장기 개선 사항 (6개월 이상)

  1. 디자인 시스템: Storybook을 이용한 컴포넌트 문서화
  2. MSW: Mock Service Worker를 이용한 API 모킹
  3. E2E 테스트: Playwright 또는 Cypress를 이용한 자동화 테스트

10.5 팀 개발 규칙 제안

  1. 커밋 컨벤션: Conventional Commits 도입
  2. 브랜치 전략: Git Flow 또는 GitHub Flow 정립
  3. 코드 리뷰: PR 템플릿 및 리뷰 체크리스트 수립
  4. 문서화: 관리자 기능별 사용자 가이드 작성

11. 결론

Admin 프로젝트는 최신 기술 스택(Vite, TypeScript 5.x, TailwindCSS 4.x)을 활용한 현대적인 관리자 시스템입니다. Recoil을 통한 효율적인 상태 관리와 TanStack Query를 통한 서버 상태 관리가 잘 구축되어 있어 개발 생산성이 높습니다.

특히 Vite 기반의 빠른 개발 환경과 TailwindCSS를 통한 일관된 디자인 시스템이 장점입니다. React Quill을 활용한 리치 에디터와 체계적인 API 관리 구조도 잘 설계되어 있습니다.

다만, 보안 측면에서 토큰 저장 방식의 개선과 불필요한 API 호출 최적화가 즉시 필요하며, 테스트 코드 작성과 권한 관리 시스템 구축을 통해 더욱 안정적이고 확장 가능한 관리자 시스템으로 발전시킬 수 있을 것으로 판단됩니다.