PeachStore는 pPhone, pPad, pMac 등 Apple 기반 스타일의 전자기기와 악세서리를 판매하는 쇼핑몰입니다. 관리자와 고객 간의 인터랙션, 제품 커스터마이징, 회원 등급별 할인 정책까지 포함된 전자상거래 플랫폼입니다.
프론트엔드는 JSP + Bootstrap/jQuery, 백엔드는 Spring MVC + MyBatis, DB는 MySQL, WAS는 Tomcat으로 구성되어 있습니다.
- 전체 개발 기간: 2025-07-10 ~ 2025-08-05
- 요구사항 정의: 2025-07-10 ~ 2025-07-12
- 기획 및 설계(기능정의서, ERD 작성): 2025-07-13 ~ 2025-07-20
- 구현: 2025-07-17 ~ 2025-08-04
- 테스트 및 수정: 2025-08-04 ~ 2025-08-05
회원가입 / 로그인
- 이메일 및 아이디 기반 회원가입, SNS 로그인(Google, Naver) 연동
회원정보 관리
- 비밀번호 변경, 주소 수정
회원 등급 시스템
- 등급에 따른 할인율 및 쿠폰 혜택 차등 적용
제품 목록 조회
- 상위, 하위 카테고리 별 상품 목록 조회
제품 상세 조회 및 장바구니 추가
- 제품의 기본 정보를 확인
- 커스터마이징 옵션 (사이즈/색상/용량) 선택 후 장바구니에 추가
주문 생성(결제)
- 장바구니 기반 주문 생성
- 주소 정보 입력 후 결제(토스 페이먼츠) 완료할 경우, 결제와 주문 내역 및
snapshot에 당시 주문 정보를 저장
문의 등록
- 문의 등록, 이미지 첨부 가능
- 관리자가 답변 시
answered_at과 함께 내용 표시
default.mp4
리뷰 작성
- 발송 완료된 상품에 한해 리뷰 작성 가능, 이미지 등록 가능
default.mp4
관리자 관리
- 최상위 관리자가 타 관리자를 등록 및 관리 가능
default.mp4
제품 관리
- 제품 등록 / 수정 / 삭제, 옵션(색상/사이즈/용량) 및 이미지 등록
default.mp4
- 제품의 상위/하위 카테고리 생성, 수정, 비활성화 처리 가능
주문 관리
- 유저 주문 내역 확인 가능
default.mp4
회원 관리
- 사이트 회원 목록 확인 및 비활성화 처리 가능
_.PeachStore.Admin.-.Chrome.2025-08-06.01-49-50.mp4
리뷰 관리
- 전체 리뷰 확인 및 선택 리뷰 비활성화 처리 가능
문의 관리
- 유저 문의 목록 확인 및 관리자 계정으로 답변 작성
등급 관리
- 회원 등급 생성, 수정, 삭제 가능
| 기능 | 설명 |
|---|---|
| 스냅샷 기능 | 주문 당시 제품의 이름, 가격, 옵션 등을 그대로 보존 |
| 비활성화 관리 | 제품/리뷰/회원 등을 soft-delete 처리 (is_active = false) 방식 사용 |
| 계층 | 주요 역할 및 기술 | 설명 |
|---|---|---|
| 클라이언트(웹 브라우저) | JSP, Bootstrap, jQuery | UI 렌더링, 사용자 입력 수집, AJAX 요청, SNS 로그인 버튼 제공 |
| 웹 서버/서블릿 컨테이너 | Tomcat | HTTP 요청 수신 및 처리, JSP 서블릿 변환 |
| 애플리케이션 서버 (Spring MVC) | Spring MVC, MyBatis | 요청 라우팅, 비즈니스 로직 처리, DB 연동, 트랜잭션 관리, 보안(인증/인가) |
| DB 서버 | MySQL | 사용자, 제품, 주문, 리뷰 등 데이터 저장 및 관리 |
| 테이블명 | 설명 |
|---|---|
admin |
관리자 정보 및 역할 (super, admin) |
user |
일반 회원 정보 (소셜 로그인 연동 포함) |
sns_provider |
소셜 로그인 제공자 (Google, Naver) |
| 테이블명 | 설명 |
|---|---|
product_topcategory |
제품 상위 카테고리 (pPhone, pPad 등) |
product_subcategory |
제품 하위 카테고리 (14시리즈 등) |
product |
제품 정보 |
product_img |
제품 이미지 |
product_size, product_color, product_capacity |
제품 옵션 |
product_engraving |
제품 각인 옵션 |
custom_option |
하나의 제품에 대한 커스터마이징 조합 |
| 테이블명 | 설명 |
|---|---|
cart, cart_item |
장바구니 및 제품 항목 |
order_receipt |
주문 영수증 (날짜, 상태) |
order_detail |
주문 상세 (수량, 스냅샷) |
snapshot |
주문 시점 제품 정보 스냅샷 |
tosspayment |
결제 정보 저장 |
| 테이블명 | 설명 |
|---|---|
user_grade |
등급 정보 및 할인율 (Bronze~Platinum) |
review, review_img |
제품 리뷰 및 이미지 |
inquiry, inquiry_img |
문의 및 이미지, 답변 포함 |
저장 경로 예시
C:\Dev\Peach-Store-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\peachStore\data\subcategory_17\저장시간.jpg
지정명칭_pk 폴더에 저장시간.jpg 파일로 저장합니다.
지정명칭
- 상위카테고리: category
- 하위카테고리: subcategory
- 제품: product
- 문의: p
- 리뷰: r
-
OAuth 키 등 민감정보를 안전하게 관리하는 방법이 정리되어 있습니다.
-
모든 도메인에서 이미지를 등록할 때 사용할 수 있는 공용 파일 매니저 클래스 사용법이 정리되어 있습니다.
- 기간 내 개발하지 못한 제품 각인 서비스, 멤버십 자동 승급, 쿠폰 시스템 등 구현
- RPG 패턴이 지켜지지 않은 페이지 개선
- 예외처리가 제대로 이루어지지 않은 부분 개선
수업시간에 배운것들을 구현하면서 듣고만 넘어갔던 개념들에 대해 다시 리뷰해 볼수 있는 시간과 더 나아가 보안과 관련해 조금 더 깊게 알아보고 익힐 수 있는 프로젝트 기간이 되었습니다.
Spring Framework의 전반적인 생태계를 이해할 수 있었고, 특히 Spring Boot의 자동 설정 기능과 의존성 주입의 편리함을 체감할 수 있었습니다. 무엇보다 단순한 기능 구현을 넘어서 안정성과 확장성을 고려한 아키텍처 설계의 필요성을 느낄 수 있었습니다.
배운 내용을 실제로 적용해보며 많은 걸 얻었습니다. 다만 디테일한 부분은 미흡했기에, 다음에는 이런 부분까지 놓치지 않도록 노력할 계획입니다.
미니 프로젝트였지만 다양한 기능을 직접 구현해보며 스프링에 대한 이해도와 숙련도를 높일 수 있었던 의미 있는 경험이었습니다.
매일 접하던 쇼핑몰에 이렇게 많은 로직이 필요할지 몰랐습니다. 사용자 입장에서 당연하게 있어야 한다고 생각하는 기능을 어떻게 구현해야 하는지 생각할 수 있는 좋은 기회였습니다. 다음 프로젝트에서는 트러블 슈팅 과정도 세세하게 기록하면 더 좋은 경험이 될 것 같습니다.






