Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pick-px/frontend

Repository files navigation

Pick-PX Frontend

실시간 픽셀 아트 협업 플랫폼의 프론트엔드 입니다.

📋 프로젝트 소개

Pick-PX는 사용자들이 실시간으로 함께 픽셀 아트를 그릴 수 있는 협업 플랫폼입니다. 캔버스 공유, 실시간 채팅, 게임 모드 등 다양한 기능을 제공합니다.

주요 기능

  • 🎨 실시간 픽셀 아트 캔버스: 다중 사용자가 동시에 픽셀을 그릴 수 있는 협업캔버스
  • 💬 실시간 채팅: 캔버스 내에서 실시간으로 소통할 수 있는 채팅 기능
  • 🎮 게임 모드: 퀴즈를 통한 게임형 캔버스 경험
  • 👥 그룹 시스템: 캔버스를 그룹 단위로 관리하고 공유
  • 📱 반응형 디자인: 데스크톱과 모바일 환경 모두 지원
  • 🔐 OAuth 로그인: Google 로그인 지원
  • 🎵 사운드 효과: BGM 및 효과음으로 몰입감 있는 경험 제공

🛠 기술 스택

Frontend Framework

  • React 19.1.0 - 사용자 인터페이스 구축
  • TypeScript 5.8.3 - 타입 안전성 보장
  • Vite 7.0.0 - 빠른 개발 서버 및 빌드 도구

UI & Styling

  • Tailwind CSS 4.1.11 - 유틸리티 기반 CSS 프레임워크
  • React Responsive - 반응형 디자인 구현
  • React Slick - 이미지 캐러셀 컴포넌트

State Management

  • Zustand 5.0.6 - 경량 상태 관리 라이브러리

Networking & Communication

  • Axios 1.10.0 - HTTP 클라이언트
  • Socket.io Client 4.8.1 - 실시간 웹소켓 통신

Routing

  • React Router DOM 7.6.3 - 클라이언트 사이드 라우팅

Utilities

  • JWT Decode 4.0.0 - JWT 토큰 디코딩
  • React Toastify 11.0.5 - 토스트 알림
  • Use Sound 5.0.0 - 사운드 효과 관리

Development Tools

  • ESLint - 코드 품질 관리
  • Prettier - 코드 포맷팅
  • Vitest - 단위 테스트
  • Testing Library - React 컴포넌트 테스트

📁 프로젝트 구조

src/
├── api/ # API 클라이언트
├── assets/ # 정적 자산 (이미지, 아이콘)
├── auth/ # 인증 관련 컴포넌트
├── components/ # 재사용 가능한 컴포넌트
│ ├── album/ # 앨범 관련 컴포넌트
│ ├── canvas/ # 캔버스 관련 컴포넌트
│ ├── chat/ # 채팅 관련 컴포넌트
│ ├── game/ # 게임 관련 컴포넌트
│ ├── group/ # 그룹 관련 컴포넌트
│ ├── modal/ # 모달 컴포넌트
│ └── toast/ # 토스트 알림 컴포넌트
├── hooks/ # 커스텀 React 훅
├── pages/ # 페이지 컴포넌트
├── router/ # 라우팅 설정
├── services/ # 서비스 레이어
├── store/ # Zustand 상태 관리
├── utils/ # 유틸리티 함수
└── workers/ # Web Worker

🚀 설치 및 실행

필수 요구사항

  • Node.js 18.0.0 이상
  • npm 또는 yarn

설치

# 의존성 설치
npm install

개발 서버 실행

# 개발 모드로 실행
npm run dev

개발 서버는 기본적으로 http://localhost:5173에서 실행됩니다.

빌드

# 프로덕션 빌드
npm run build

미리보기

# 빌드된 결과물 미리보기
npm run preview

테스트

# 단위 테스트 실행
npm run test
# 테스트 UI 실행
npm run test:ui

코드 품질

# ESLint 검사
npm run lint

🔧 환경 설정

환경 변수

프로젝트 루트에 .env 파일을 생성하고 다음 변수들을 설정하세요:

VITE_API_BASE_URL=http://localhost:3000
VITE_SOCKET_URL=http://localhost:3000

백엔드 연결

이 프론트엔드는 NestJS 백엔드와 연동됩니다. 백엔드 서버가 실행 중이어야 정상적으로 작동합니다.

📱 주요 컴포넌트

Canvas System

  • PixelCanvas.tsx - 메인 픽셀 캔버스 컴포넌트
  • CanvasUI.tsx - 캔버스 UI 컨트롤
  • StarfieldCanvas.tsx - 별자리 배경 효과

Game System

  • GameCanvas.tsx - 게임 모드 캔버스
  • QuestionModal.tsx - 퀴즈 모달
  • GameTimer.tsx - 게임 타이머

Chat System

  • Chat.tsx - 실시간 채팅 컴포넌트
  • MessageList.tsx - 메시지 목록
  • MessageInput.tsx - 메시지 입력

Modal System

  • Modal.tsx - 기본 모달 컴포넌트
  • LoginModalContent.tsx - 로그인 모달
  • GroupModalContent.tsx - 그룹 관리 모달

🔌 API 통신

API 클라이언트

  • apiClient.ts - Axios 기반 HTTP 클라이언트
  • CanvasAPI.ts - 캔버스 관련 API
  • GameAPI.ts - 게임 관련 API
  • GroupAPI.ts - 그룹 관련 API

WebSocket 통신

  • socketService.ts - Socket.io 클라이언트 설정
  • useSocket.ts - WebSocket 커스텀 훅
  • useChatSocket.ts - 채팅 소켓 훅
  • useGameSocket.ts - 게임 소켓 훅

🎨 스타일링

이 프로젝트는 Tailwind CSS를 사용하여 스타일링됩니다:

  • 유틸리티 클래스 기반 스타일링
  • 반응형 디자인 지원
  • 다크/라이트 모드 지원 (필요시)

🧪 테스트

# 모든 테스트 실행
npm run test
# 테스트 커버리지 확인
npm run test:coverage
# 테스트 UI 실행
npm run test:ui

🤝 기여하기

  1. 이 저장소를 포크합니다
  2. 새로운 브랜치를 생성합니다 (git checkout -b feature/amazing-feature)
  3. 변경사항을 커밋합니다 (git commit -m 'Add some amazing feature')
  4. 브랜치에 푸시합니다 (git push origin feature/amazing-feature)
  5. Pull Request를 생성합니다

📄 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.

📞 지원

문제가 발생하거나 질문이 있으시면 이슈를 생성해 주세요.


Pick-PX Frontend - 함께 그리는 픽셀 아트의 세계 🌟

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages

AltStyle によって変換されたページ (->オリジナル) /