LocaQuest는 Redis와 Kafka를 활용한 실시간 데이터 분석을 통해 사용자에게 경험치, 레벨, 도전 과제 등 게임화된 요소를 제공하고, 마이크로서비스 아키텍처로 높은 성능을 구현하는 위치 기반 게임화 플랫폼입니다.
- 현재 위치 표시: 사용자의 현재 위치를 지도에 표시합니다.
- 이동 거리 계산: 사용자의 GPS 위치 데이터를 기반으로 이동 거리를 계산하여 표시합니다.
- 걸음 수 추적: 모바일 센서 기능을 활용하여 사용자의 실시간 걸음 수를 집계하고 UI에 표시합니다.
- 경험치 시스템: 사용자가 활동하면 경험치가 제공되고, 이를 기반으로 레벨이 올라갑니다. 이를 UI에 시각적으로 표현합니다.
- 도전 과제 시스템: 사용자가 일정 조건을 달성하면 도전 과제를 완료하게 되고, 이를 목록으로 보여줍니다.
- 경험치 바: 사용자의 경험치 진행 상황을 시각적으로 나타내는 경험치 바를 표시합니다.
- 레벨 표시: 사용자가 현재 레벨을 확인할 수 있도록 레벨을 UI에 표시합니다.
- 도전 과제 아이콘: 달성한 도전 과제를 아이콘 형태로 표시하여 사용자의 참여를 유도합니다.
- 차트: 사용자의 걸음수, 이동 거리, 경험치 등 다양한 활동 데이터를 차트나 그래프 형태로 시각화합니다.
- 날짜별 통계: 날짜별로 활동 데이터를 구분하여 제공하고, 사용자가 쉽게 비교할 수 있도록 합니다.
- WebSocket 통신: 클라이언트와 서버 간 실시간 데이터를 주고받기 위해 WebSocket을 활용합니다.
- 실시간 피드백 제공: 사용자 활동에 따라 실시간으로 피드백을 제공하여 즉각적인 반응을 보여줍니다.
- UI 업데이트: 실시간 데이터에 따라 UI가 즉시 업데이트되어 사용자에게 최신 정보를 반영합니다.
- 회원 가입 및 로그인: 사용자가 계정을 생성하고 로그인할 수 있는 기능을 제공합니다.
- 프로필 사진 업로드: 사용자가 자신의 프로필 사진을 업로드할 수 있습니다.
- 기본 정보 수정: 사용자가 이름, 이메일 등 기본 정보를 수정할 수 있습니다.
- OAuth 2.0 인증: 사용자 인증을 위해 OAuth 2.0과 JWT를 활용하여 보안성을 높입니다.
- 이메일 인증: 회원 가입 시 이메일 인증을 요구하여 계정 보안을 강화합니다.
- React Native
- Typescript
- SQLite
src/
├── api/ # 서버 API 요청
├── app/ # 페이지 단위 컴포넌트
├── components/ # 재사용 가능한 UI 컴포넌트
├── config/ # 상수 및 설정값
├── libs/ # 외부 라이브러리 래퍼
├── hooks/ # 커스텀 훅
├── services/ # 비즈니스 로직
├── store/ # 전역 상태 관리
├── styles/ # 공통 스타일링 관리
├── types/ # 타입 정의
└── utils/ # 정적 유틸리티 함수
assets/ # 이미지 등 리소스 파일