Skip to content

Repository files navigation

🛒 Commerce project

commerce 프로젝트는 전자상거래 플랫폼을 구축하기 위한 자바 기반의 웹 애플리케이션입니다. 이 프로젝트는 멀티 모듈로 이루어져 있으며, 회원가입, 주문 처리, 예약 상품구매 등 전자상거래의 핵심 기능을 포함하고 있습니다.


🏃‍♂ Run

  1. 저장소 클론:
    git clone https://github.com/jinu0729/commerce.git
    cd commerce
  2. Gradle 빌드:
    ./gradlew build
  3. 애플리케이션 실행:
    ./gradlew bootRun

🛠️ Tech Stack

spring boot spring cloud spring security mysql redis redis

  • Language: Java 21
  • Framework: Spring boot 3.2.4
  • Build: Gradle 8.7
  • Database: MySQL 8.3
  • Container: Docker

✨ Feature

  • Spring Security 및 JWT를 활용한 사용자 인증 및 인가
  • Google SMTP를 활용한 사용자 e-mail 인증
  • 지정된 시간에만 구매 가능한 예약 구매 기능
  • Spring Cloud 및 Netflix Eureka를 활용한 마이크로서비스 아키텍처
  • Redis를 이용한 동시성 처리

🏗 Architecture

Architecture


🗓️ ERD

ERD


📁 Folder Structure

├── README.md
├── build
│   └── resolvedMainClassName
├── build.gradle
├── commerce-api-gateway
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commerceapigateway
│       │   │               ├── CommerceApiGatewayApplication.java
│       │   │               ├── filter
│       │   │               │   └── AuthorizationHeaderFilter.java
│       │   │               └── util
│       │   │                   └── JwtUtil.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── commerce-auth-service
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commerceauthservice
│       │   │               ├── CommerceAuthServiceApplication.java
│       │   │               ├── domain
│       │   │               │   ├── client
│       │   │               │   │   └── UserServiceClient.java
│       │   │               │   ├── controller
│       │   │               │   │   └── AuthController.java
│       │   │               │   ├── dto
│       │   │               │   │   ├── RefreshTokenRequestDto.java
│       │   │               │   │   ├── SignInRequestDto.java
│       │   │               │   │   └── UserDto.java
│       │   │               │   ├── entity
│       │   │               │   │   └── Auth.java
│       │   │               │   ├── repository
│       │   │               │   │   └── AuthRepository.java
│       │   │               │   └── service
│       │   │               │       ├── AuthService.java
│       │   │               │       └── AuthServiceImpl.java
│       │   │               └── global
│       │   │                   ├── config
│       │   │                   │   └── PasswordConfig.java
│       │   │                   ├── cookie
│       │   │                   │   └── CookieUtil.java
│       │   │                   ├── jwt
│       │   │                   │   ├── JwtAuthenticationFilter.java
│       │   │                   │   ├── JwtAuthorizationFilter.java
│       │   │                   │   └── JwtUtil.java
│       │   │                   ├── security
│       │   │                   │   ├── SecurityConfig.java
│       │   │                   │   ├── UserDetailsImpl.java
│       │   │                   │   └── UserDetailsServiceImpl.java
│       │   │                   └── util
│       │   │                       └── Timestamped.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── commerce-common
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commercecommon
│       │   │               ├── dto
│       │   │               │   └── ResponseBodyDto.java
│       │   │               ├── exception
│       │   │               │   ├── CustomException.java
│       │   │               │   ├── ErrorCode.java
│       │   │               │   ├── ExceptionResponse.java
│       │   │               │   └── GlobalExceptionHandler.java
│       │   │               └── redis
│       │   │                   ├── RedisConfig.java
│       │   │                   └── RedisService.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── commerce-discovery-service
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commercediscoveryservice
│       │   │               └── CommerceDiscoveryServiceApplication.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── commerce-order-service
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commerceorderservice
│       │   │               ├── CommerceOrderServiceApplication.java
│       │   │               ├── domain
│       │   │               │   ├── cart
│       │   │               │   │   ├── controller
│       │   │               │   │   │   └── CartController.java
│       │   │               │   │   ├── dto
│       │   │               │   │   │   ├── request
│       │   │               │   │   │   │   ├── CartItemEditRequestDto.java
│       │   │               │   │   │   │   └── CartRequestDto.java
│       │   │               │   │   │   └── response
│       │   │               │   │   │       └── CartItemResponseDto.java
│       │   │               │   │   ├── entity
│       │   │               │   │   │   ├── Cart.java
│       │   │               │   │   │   └── CartItem.java
│       │   │               │   │   ├── repository
│       │   │               │   │   │   ├── CartDetailRepository.java
│       │   │               │   │   │   └── CartRepository.java
│       │   │               │   │   └── service
│       │   │               │   │       ├── CartDetailService.java
│       │   │               │   │       ├── CartDetailServiceImpl.java
│       │   │               │   │       ├── CartService.java
│       │   │               │   │       └── CartServiceImpl.java
│       │   │               │   └── order
│       │   │               │       ├── controller
│       │   │               │       │   └── OrderController.java
│       │   │               │       ├── dto
│       │   │               │       │   ├── request
│       │   │               │       │   │   └── OrderRequestDto.java
│       │   │               │       │   └── response
│       │   │               │       │       ├── OrderDetailResponseDto.java
│       │   │               │       │       └── OrderResponseDto.java
│       │   │               │       ├── entity
│       │   │               │       │   ├── Order.java
│       │   │               │       │   ├── OrderDetail.java
│       │   │               │       │   └── Status.java
│       │   │               │       ├── repository
│       │   │               │       │   ├── OrderDetailRepository.java
│       │   │               │       │   └── OrderRepository.java
│       │   │               │       ├── scheduler
│       │   │               │       │   └── OrderScheduler.java
│       │   │               │       └── service
│       │   │               │           ├── OrderDetailService.java
│       │   │               │           ├── OrderDetailServiceImpl.java
│       │   │               │           ├── OrderService.java
│       │   │               │           └── OrderServiceImpl.java
│       │   │               └── global
│       │   │                   ├── client
│       │   │                   │   ├── ProductServiceClient.java
│       │   │                   │   └── dto
│       │   │                   │       └── ProductResponseDto.java
│       │   │                   ├── cookie
│       │   │                   │   └── CookieUtil.java
│       │   │                   ├── jwt
│       │   │                   │   └── JwtUtil.java
│       │   │                   └── util
│       │   │                       ├── OrderUtil.java
│       │   │                       └── Timestamped.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── commerce-product-service
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commerceproductservice
│       │   │               ├── CommerceProductServiceApplication.java
│       │   │               ├── domain
│       │   │               │   ├── controller
│       │   │               │   │   └── ProductController.java
│       │   │               │   ├── dto
│       │   │               │   │   └── ProductResponseDto.java
│       │   │               │   ├── entity
│       │   │               │   │   ├── Product.java
│       │   │               │   │   └── Type.java
│       │   │               │   ├── repository
│       │   │               │   │   └── ProductRepository.java
│       │   │               │   └── service
│       │   │               │       ├── ProductService.java
│       │   │               │       └── ProductServiceImpl.java
│       │   │               └── global
│       │   │                   ├── dto
│       │   │                   │   └── ResponseBodyDto.java
│       │   │                   ├── exception
│       │   │                   │   ├── CustomException.java
│       │   │                   │   ├── ErrorCode.java
│       │   │                   │   ├── ExceptionResponse.java
│       │   │                   │   └── GlobalExceptionHandler.java
│       │   │                   ├── redis
│       │   │                   │   ├── AopForTransaction.java
│       │   │                   │   ├── CustomSpringELParser.java
│       │   │                   │   ├── DistributedLock.java
│       │   │                   │   ├── DistributedLockAop.java
│       │   │                   │   └── RedissonConfig.java
│       │   │                   └── util
│       │   │                       └── Timestamped.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           │   └── com
│           │       └── jinu
│           │           └── commerceproductservice
│           │               └── domain
│           │                   └── service
│           │                       └── ProductServiceTest.java
│           └── resources
├── commerce-user-service
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── generated
│       │   ├── java
│       │   │   └── com
│       │   │       └── jinu
│       │   │           └── commerceuserservice
│       │   │               ├── CommerceUserService.java
│       │   │               ├── domain
│       │   │               │   ├── controller
│       │   │               │   │   └── UserController.java
│       │   │               │   ├── dto
│       │   │               │   │   ├── EmailRequestDto.java
│       │   │               │   │   ├── SignUpRequestDto.java
│       │   │               │   │   ├── UpdateInfoRequestDto.java
│       │   │               │   │   └── UpdatePasswordRequestDto.java
│       │   │               │   ├── entity
│       │   │               │   │   └── User.java
│       │   │               │   ├── repository
│       │   │               │   │   └── UserRepository.java
│       │   │               │   ├── service
│       │   │               │   │   ├── UserService.java
│       │   │               │   │   └── UserServiceImpl.java
│       │   │               │   └── util
│       │   │               │       ├── Timestamped.java
│       │   │               │       └── UserUtil.java
│       │   │               └── global
│       │   │                   ├── config
│       │   │                   │   └── PasswordConfig.java
│       │   │                   ├── cookie
│       │   │                   │   └── CookieUtil.java
│       │   │                   ├── email
│       │   │                   │   ├── config
│       │   │                   │   │   └── EmailConfig.java
│       │   │                   │   └── service
│       │   │                   │       ├── EmailService.java
│       │   │                   │       └── EmailServiceImpl.java
│       │   │                   └── jwt
│       │   │                       └── JwtUtil.java
│       │   └── resources
│       │       └── application.yaml
│       └── test
│           ├── java
│           └── resources
├── docker-compose.yaml
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

📑 API

https://commerce.gitbook.io/api


🤔 Think About

https://commerce.gitbook.io/think-about

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages