StepMate 서비스의 Spring Boot 기반 REST API 서버입니다. Google 로그인과 JWT 인증을 처리하고, 사용자 정보, 러닝 세션, 스마트 인솔 센서 데이터, 보행 분석 결과 및 게임 랭킹을 관리합니다.
- Google ID Token 검증 및 사용자 등록·로그인
- JWT 발급 및 API 인증
- 사용자 신체 정보와 연속 운동 기록 관리
- 러닝 세션 시작, 종료 및 삭제
- 압력·보행 센서 데이터 일괄 저장
- 일별·월별 기록과 세션 분석 결과 제공
- 게임 점수 저장 및 랭킹 조회
- Java 21
- Spring Boot 4
- Spring Web MVC
- Spring Security
- Spring Data JPA
- PostgreSQL
- Gradle
- JWT
- Google API Client
- JDK 21
- PostgreSQL
- Google OAuth 클라이언트 ID
Gradle은 Wrapper가 포함되어 있어 별도로 설치하지 않아도 됩니다.
PostgreSQL에 StepMate가 사용할 데이터베이스를 생성합니다.
CREATE DATABASE stepmate_db;src/main/resources/application.properties에 데이터베이스 연결 정보, JWT 비밀키, Google OAuth 클라이언트 ID를 설정합니다.
spring.datasource.url=jdbc:postgresql://localhost:5432/stepmate_db
spring.datasource.username=<DB_USERNAME>
spring.datasource.password=<DB_PASSWORD>
spring.jwt.secret=<32_BYTES_OR_LONGER_SECRET>
google.oauth.client-ids=<ANDROID_CLIENT_ID>,<WEB_CLIENT_ID>실제 비밀번호, JWT 비밀키 및 OAuth 설정값은 공개 저장소에 커밋하지 마세요. 배포 환경에서는 환경 변수나 별도의 비밀 관리 도구를 사용하는 것을 권장합니다.
📂 프로젝트 구조
src/main/java/foothaha/stepmate_back/
├─ auth/ # Google 로그인
├─ config/ # Spring Security, JWT
├─ game/ # 게임 점수와 랭킹
├─ response/ # 공통 응답 및 예외 처리
├─ run/ # 러닝 세션과 분석 결과
├─ sensor/ # 스마트 인솔 센서 데이터
└─ user/ # 사용자 정보
🔐 인증 방식
로그인을 제외한 보호된 API는 다음 헤더에 백엔드가 발급한 JWT를 전달해야 합니다.
Authorization: Bearer <JWT>Google 로그인 요청:
POST /api/auth/google
Content-Type: application/json{
"idToken": "<GOOGLE_ID_TOKEN>"
}mainsprout 🌱 |
hym7196 🎨 |
dusal1111 🎨 |
- Frontend: FootHaHa/stepmate_front
- Board: FootHaHa/stepmate_board