Skip to content

n3wzd/LocaQuest-Backend-Core

Repository files navigation

LocaQuest - Backend - Core

LocaQuest는 Redis와 Kafka를 활용한 실시간 데이터 분석을 통해 사용자에게 경험치, 레벨, 도전 과제 등 게임화된 요소를 제공하고, 마이크로서비스 아키텍처로 높은 성능을 구현하는 위치 기반 게임화 플랫폼입니다.

Features

1. 실시간 데이터 처리

  • Redis: 데이터 캐싱 시스템으로 사용합니다.
  • Kafka: 서버 간 실시간 데이터 스트리밍 및 메시징 시스템으로 사용합니다.

2. 게임화 요소

  • 경험치 시스템: 사용자의 활동에 따른 경험치, 걸음수, 이동 거리를 날짜 별로 관리합니다.
  • 도전 과제 시스템: 사용자 활동에 따른 도전 과제 달성 여부와 달성 날짜를 저장합니다.

3. 사용자 관리

  • 사용자 관리 API: 회원가입, 로그인, 프로필 수정 등 REST API를 제공합니다.
  • OAuth 2.0 기반 인증: JWT 토큰을 사용하여 인증 및 권한 부여를 처리합니다.
  • 이메일 인증: 회원 가입 및 비밀번호 변경시, 이메일 인증을 요구하여 보안을 높입니다.
  • 프로필 이미지 업로드: 사용자가 직접 프로필 사진을 업로드할 수 있습니다.

4. 데이터베이스 및 서버

  • MySQL: 사용자 정보, 활동 내용, 도전 과제 등을 MySQL에 저장합니다.
  • 로깅 시스템: 서버의 활동 로그 기록을 통해 문제 발생 시 추적 및 유지보수를 용이하게 합니다.

Stack

  • Spring Boot
  • Spring Security
  • Spring Data JPA
  • Java
  • Redis
  • Kafka

Structure

src/
 ├── annotation/    # 커스텀 어노테이션
 ├── component/    # 동적 유틸리티 싱글톤
 ├── config/       # 설정 (Security, DB, CORS 등)
 ├── constant/     # 상수 데이터
 ├── controller/   # 클라이언트 요청 응답
 ├── dto/          # Data Transfer Object 정의
 ├── exception/    # 예외 처리 클래스
 ├── lib/          # 외부 라이브러리 래퍼
 ├── model/        # 엔티티, 도메인 모델
 ├── repository/   # DB 상호작용
 ├── service/      # 비즈니스 로직
 ├── util/         # 정적 유틸리티 함수
 └── validator/    # 커스텀 유효성 검사