Kotlin + Spring Boot 4로 만든 쇼핑몰 백엔드 학습/실습 프로젝트입니다.
| 구분 | 사용 기술 |
|---|---|
| 언어 / 런타임 | Kotlin 2.4.10, JDK 25 |
| 프레임워크 | Spring Boot 4.1.1 (Spring Framework 7, Jakarta EE 11) |
| 빌드 | Gradle 9.7.1 (Kotlin DSL) |
| 데이터 | Spring Data JPA, QueryDSL 7.6 (OpenFeign), MySQL, H2 |
| 인증 / 보안 | Spring Security, OAuth2 Client (Google / Kakao / Naver), JWT (jjwt 0.13.0), TOTP 2단계 인증 |
| 캐시 / 세션 | Redis (Spring Data Redis) |
| 메시징 | Apache Kafka (Spring Kafka) |
| 검색 | OpenSearch (opensearch-java 3.9.0, 상품명 자동완성) |
| 결제 | Toss Payments |
| API 문서 | springdoc-openapi 3.1.0 (Swagger UI) |
- 회원: 이메일 / OAuth 가입·로그인, JWT 인증, TOTP 2단계 인증
- 상품: 카테고리·검색·페이징 조회, 상품 옵션(가격/재고), 상품명 자동완성
- 장바구니, 주문, 결제(Toss), 주문 취소 / 반품, 배송 상태 관리
- 쿠폰 / 포인트 적용
- 관리자: 상품 / 쿠폰 / 포인트 관리, 주문 처리
- 주문 이벤트 Kafka 발행
민감 정보(DB, Redis, Kafka, OpenSearch 접속 정보, JWT 키 등)는 git에 올리지 않는 .env에서 환경변수로 주입합니다.
DB 프로파일로 mysql 또는 h2를 함께 지정해야 합니다.
./gradlew bootRun --args='--spring.profiles.active=local,mysql' # 외부 MySQL
./gradlew bootRun --args='--spring.profiles.active=local,h2' # 인메모리 H2
./gradlew test- 로컬 서버 포트:
16000 - API 문서:
http://localhost:16000/swagger.html - DB 스키마:
ddl.sql
- e-commerce-frontend: 쇼핑몰 프론트엔드
- e-commerce-admin-frontend: 관리자 프론트엔드