Skip to content

ClickyPack/ClicyPackServer

Repository files navigation

ClickyPackServer

딸깍팩 서버 Spring Boot 3.5 + Java 21, 헥사고날 아키텍처(포트 & 어댑터) 기반 멀티모듈 Gradle 프로젝트.

모듈 구조

app-api → usecase, domain, infra
infra   → usecase, domain
usecase → domain
domain  → (없음)
모듈 역할 Spring
domain 순수 도메인 모델 (User, UserId, AuthProvider) 금지
usecase 비즈니스 로직 + 포트 인터페이스. @Service / @Transactional 금지 금지
infra 포트 구현체 — JPA, Google OAuth, JWT 발급 허용
app-api 실행 모듈 — REST 컨트롤러, Security, Composition Root 허용

기술 스택

  • Java 21, Spring Boot 3.5.10, Gradle
  • DB: H2 인메모리 (MySQL 호환 모드) — local 프로파일
  • 인증: Google OAuth 2.0 (ID Token 검증), JWT HS256 발급
  • JWT 라이브러리: Nimbus-JOSE-JWT

로컬 실행

필수 환경변수

변수 설명
AUTH_TOKEN_SECRET JWT 서명 키 (최소 32바이트)
GOOGLE_CLIENT_ID Google OAuth 클라이언트 ID
GOOGLE_CLIENT_SECRET Google OAuth 클라이언트 시크릿

실행

# 컴파일 확인
./gradlew compileJava

# 로컬 프로파일로 실행
./gradlew :app-api:bootRun --args='--spring.profiles.active=local'

H2 콘솔: http://localhost:8080/h2-console JDBC URL: jdbc:h2:mem:clickypackserver

API

Method Path 설명
POST /v0/auth/oauth/{provider}/login OAuth 로그인 / 회원가입

요청 예시

POST /v0/auth/oauth/google/login
{
  "code": "4/0AfJohXn...",
  "redirectUri": "com.clickypack:/oauth2redirect",
  "codeVerifier": "..."
}

응답 예시

{
  "accessToken": "eyJhbGci...",
  "registered": true
}

패키지 구조

com.clickypack
├── domain
│   └── user.model          # User, UserId, AuthProvider
├── usecase
│   └── auth
│       ├── oauth
│       │   ├── command     # OAuthLoginCommand
│       │   ├── port.in     # OAuthLoginUseCase
│       │   ├── port.out    # OAuthProviderClientPort, TokenIssuer
│       │   ├── result      # OAuthLoginResult
│       │   └── service     # OAuthLoginService
│       └── user.port.out   # UsersRepositoryPort
├── infra
│   └── auth
│       ├── oauth           # GoogleOAuthTokenClient, GoogleIdTokenVerifier
│       └── token           # JwtTokenIssuer, AuthTokenProperties
└── appapi
    ├── auth                # AuthController
    ├── config              # UsecaseConfig (Composition Root)
    └── security.config     # SecurityConfig

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages