LocaQuest는 Redis와 Kafka를 활용한 실시간 데이터 분석을 통해 사용자에게 경험치, 레벨, 도전 과제 등 게임화된 요소를 제공하고, 마이크로서비스 아키텍처로 높은 성능을 구현하는 위치 기반 게임화 플랫폼입니다.
- Redis: 데이터 캐싱 시스템으로 사용합니다.
- Kafka: 서버 간 실시간 데이터 스트리밍 및 메시징 시스템으로 사용합니다.
- 경험치 시스템: 사용자의 활동에 따른 경험치, 걸음수, 이동 거리를 날짜 별로 관리합니다.
- 도전 과제 시스템: 사용자 활동에 따른 도전 과제 달성 여부와 달성 날짜를 저장합니다.
- 사용자 관리 API: 회원가입, 로그인, 프로필 수정 등 REST API를 제공합니다.
- OAuth 2.0 기반 인증: JWT 토큰을 사용하여 인증 및 권한 부여를 처리합니다.
- 이메일 인증: 회원 가입 및 비밀번호 변경시, 이메일 인증을 요구하여 보안을 높입니다.
- 프로필 이미지 업로드: 사용자가 직접 프로필 사진을 업로드할 수 있습니다.
- MySQL: 사용자 정보, 활동 내용, 도전 과제 등을 MySQL에 저장합니다.
- 로깅 시스템: 서버의 활동 로그 기록을 통해 문제 발생 시 추적 및 유지보수를 용이하게 합니다.
- Spring Boot
- Spring Security
- Spring Data JPA
- Java
- Redis
- Kafka
src/
├── annotation/ # 커스텀 어노테이션
├── component/ # 동적 유틸리티 싱글톤
├── config/ # 설정 (Security, DB, CORS 등)
├── constant/ # 상수 데이터
├── controller/ # 클라이언트 요청 응답
├── dto/ # Data Transfer Object 정의
├── exception/ # 예외 처리 클래스
├── lib/ # 외부 라이브러리 래퍼
├── model/ # 엔티티, 도메인 모델
├── repository/ # DB 상호작용
├── service/ # 비즈니스 로직
├── util/ # 정적 유틸리티 함수
└── validator/ # 커스텀 유효성 검사