실시간 멀티플레이어 퀴즈 게임 플랫폼의 프론트엔드 애플리케이션입니다.
- 🎮 실시간 퀴즈 배틀: 친구들과 함께하는 스릴 넘치는 실시간 퀴즈 대결
- 🏆 게임룸 시스템: 방 생성 및 참여를 통한 다중 사용자 게임 환경
- 📱 반응형 디자인: 모바일, 태블릿, 데스크톱 모든 디바이스 지원
- ⚡ 실시간 상태 동기화: 게임 진행 상황 실시간 업데이트
- 🎨 현대적인 UI/UX: Tailwind CSS와 Radix UI를 활용한 세련된 인터페이스
- React 19 - 최신 React 기능 활용
- TypeScript - 타입 안정성 보장
- Vite - 빠른 개발 서버 및 빌드 도구
- TanStack Router - 파일 기반 라우팅 시스템
- TanStack Query - 서버 상태 관리
- Tailwind CSS 4.0 - 유틸리티 우선 CSS 프레임워크
- Radix UI - 접근성을 고려한 UI 컴포넌트
- Lucide React - 아이콘 라이브러리
- class-variance-authority - 조건부 스타일링
- ESLint - 코드 품질 관리
- Prettier - 코드 포맷팅
- Husky - Git 훅 관리
- Commitlint - 커밋 메시지 규칙 적용
- Vitest - 테스트 프레임워크
- Node.js 18+
- Yarn 4.9.1+
# 의존성 설치
yarn install
# 개발 서버 실행 (포트: 3000)
yarn dev
# 또는
yarn start
# 프로덕션 빌드
yarn build
# 빌드 파일 미리보기
yarn serve
src/
├── apps/ # 앱별 기능 모듈
│ ├── home/ # 홈페이지 관련 컴포넌트
│ ├── lobby/ # 로비 관련 컴포넌트 (방 생성/참여)
│ └── room/ # 게임룸 관련 컴포넌트
├── routes/ # TanStack Router 라우트 정의
├── shared/ # 공통 컴포넌트 및 유틸리티
│ ├── components/ # 재사용 가능한 UI 컴포넌트
│ ├── hooks/ # 공통 커스텀 훅
│ └── utils/ # 유틸리티 함수
└── lib/ # 라이브러리 설정 및 유틸리티
# 테스트 실행
yarn test
# 타입 체크
yarn type-check
# 린팅
yarn lint
# 코드 포맷팅
yarn format
# 린팅 + 포맷팅 자동 수정
yarn check
이 프로젝트는 Conventional Commits를 따릅니다.
# 대화형 커밋 메시지 작성 도우미
yarn commit
# 커밋 메시지 도움말 보기
yarn commit:help
<타입>: <설명> #<이슈번호>
예시:
feat: 사용자 로그인 기능 추가 #123
fix: 헤더 컴포넌트 버그 수정 #456
docs: README 파일 업데이트 #789
이 프로젝트는 GitHub Actions를 통한 자동화된 워크플로우를 제공합니다:
- 자동 이슈 연결: 브랜치나 PR 생성 시 이슈 자동 연결
- 자동 라벨링: 작업 시작 시
in-progress
, PR 머지 시completed
라벨 자동 추가 - 자동 담당자 지정: 브랜치/PR 생성자를 이슈 담당자로 자동 지정
- 자동 이슈 닫기: 연결된 PR이 머지될 때 이슈 자동 닫기
- 브랜치 생성:
git checkout -b feature/123-new-feature
- PR 생성: 제공된 템플릿을 사용하고
Closes #123
으로 이슈 연결 - PR 머지: 이슈가 자동으로 닫히고 완료 표시됨
자세한 설정 및 사용법은 GitHub Actions 가이드를 참조하세요.
- 게임 소개 및 주요 기능 안내
- 로그인/회원가입 버튼
- 게임 통계 정보
- 게임룸 목록 및 검색
- 새 게임룸 생성
- 참여자 정보 표시
- 실시간 퀴즈 게임 진행
- 참여자 상태 및 점수 표시
- 게임 결과 및 통계
이 애플리케이션은 다음과 같은 반응형 브레이크포인트를 사용합니다:
- Mobile: < 768px
- Tablet: 768px ~ 1024px
- Desktop: > 1024px
각 컴포넌트는 디바이스별로 최적화된 UI를 제공합니다.
vite.config.js
- Vite 설정tailwind.config.ts
- Tailwind CSS 설정tsconfig.json
- TypeScript 설정eslint.config.js
- ESLint 설정prettier.config.js
- Prettier 설정commitlint.config.cjs
- Commitlint 설정
- 이슈를 생성하거나 기존 이슈를 선택합니다
- 해당 이슈 번호로 브랜치를 생성합니다:
feature-이슈번호/설명
- 변경사항을 커밋합니다 (커밋 컨벤션 준수)
- PR을 생성하고 이슈를 연결합니다
- 코드 리뷰 후 머지됩니다
이 프로젝트는 MIT 라이선스하에 배포됩니다.