Skip to content

Latest commit

 

History

History
224 lines (195 loc) · 10 KB

File metadata and controls

224 lines (195 loc) · 10 KB

header

💬 설명

엘리스 Cloud 트랙 5기 2차 프로젝트 의류 쇼핑몰 ECLIPSE입니다.


⚙️ 기술 스택

백엔드

프론트엔드



🧩 ERD

eclipseERD

⛓️ 와이어 프레임

eclipseWAF

🔥 주요기능

1. 회원

  • 회원가입
    • 이메일 형식 아이디
    • 이메일, 닉네임 중복검사
    • 비밀번호, 전화번호 유효성검사
    • OAUTH
      • 구글
  • 마이 페이지
    • 포인트
      • 포인트 적립/사용 내역 확인 가능
    • 주문 내역
      • 상품 준비중, 배송시작, 배송완료 등
    • 리뷰
      • 작성한 리뷰 확인 가능
    • 문의
      • 작성한 문의 확인 가능
    • 찜한 상품
      • 관심(좋아요): 관심있는 상품 저장
    • 내 정보 수정
      • 비밀번호
        • 수정 전 현재 비밀번호 검증
      • 전화번호
      • 닉네임
      • 주소
  • 권한
    • 일반 회원
    • 관리자
      • 모든 회원의 주문 내역, 회원 정보 조회 가능
      • 배송 상태 변경
      • 상품 및 카테고리 추가 가능
      • 회원 권한 변경 가능, 회원 삭제 가능
      • 비밀글 열람 가능/문의에 답글 달기 가능
  • 로그인
    • 로그인시 쿠키에 JWT토큰 발급
    • 이메일 주소를 입력하여 비밀번호 찾기
  • 보안
    • XSS 공격 방어를 위한 httpOnly 설정
    • CSRF 공격 방어를 위한 SameSite를 Lax로 설정
  • 멤버십 등급
    • 브론즈
      • 기본 등급
    • 실버
      • 전월 결제금액 20만원 이상
      • 매월 5000포인트 지급
    • 골드
      • 전월 결제금액 50만원 이상
      • 매월 10000포인트 지급
    • 다이아몬드
      • 전월 결제 금액 100만원 이상
      • 매월 50000포인트 지급

2. 카테고리

  • 카테고리 전체 조회
    • 카테고리명, 해당 카테고리의 상품 수
  • 카테고리 추가
    • 메인 카테고리 추가 - 메인 카테고리명 중복 불가
    • 메인 카테고리 추가 시 서브 카테고리 1개 같이 추가
    • 서브 카테고리 추가 - 해당 메인 카테고리 내 서브 카테고리명 중복 불가
    • 카테고리명 공백 불가, 1-15자 제한, 한글, 영어 대소문자, / 가능
  • 카테고리 수정
  • 카테고리 삭제
    • 해당 카테고리에 상품이 존재하는 경우 삭제 불가

3. 상품

  • 상품 등록
    • 상품 이름, 사이즈, 색상, 재고, 가격, 설명, 이미지에 대한 유효성 검사
    • 데이터베이스에 있는 메인 카테고리 이름을 불러와서 드롭 박스 형태로 선택할 수 있게 렌더링
    • 메인 카테고리를 선택하면 그에 맞는 서브 카테고리를 불러와서 렌더링
    • 사이즈는 사용자 혼동 방지를 위해 사이트에서 지정한 단위 중 선택, 색상은 자유롭게 입력 가능
    • 사이즈 별 색상 및 재고는 상품 등록을 여러 번 할 필요 없이 버튼을 통해 추가하여 한 번에 등록 가능
    • 이미지는 5개까지 선택 가능, 순서 변경 자유롭게 가능, 대표 이미지로 들어갈 사진 선택 가능
    • 대용량 이미지 압축하여 업로드
  • 상품 리스트
    • 카테고리 별로 분류해서 조회 가능
    • 최신순, 판매순, 조회순에 맞게 정렬 가능 및 상품 이름으로 검색 가능, 그에 따른 페이지네이션
    • 리스트에서는 모든 컬러 및 모든 사이즈가 품절 됐을 때만 상품 목록에서 품절 표시
  • 상품 상세
    • 색상을 선택하면 그 색상이 가지고 있는 사이즈를 불러와서 선택 가능
    • 이미지 슬라이드로 여러 장의 이미지 확인 가능
    • 색상 및 사이즈를 선택하면 사용자가 확인할 수 있게 화면에 렌더링
    • 버튼을 통해 선택한 상품의 수량을 조절 및 삭제 가능
    • 선택한 색상의 특정 사이즈만 품절일 경우 품절 표시 및 선택 불가
    • 선택한 상품의 총 금액 계산하여 표시
    • 특정 상품을 나중에 간편하게 모아서 보기 위한 찜 버튼 구현
    • redis를 이용해 조회수 관리
      • 조회수 조작을 방지하기 위해 동일한 IP는 1시간에 한번만 조회수 증가
      • 실질적 조회수 관리를 위해 해당 상품 페이지에 5초 이상 접속 중이어야 조회수 증가
  • 상품 관리
    • 관리자에 따라 자신의 등록한 상품만 수정 및 삭제 가능
    • 상품 명으로 검색 가능 및 페이지네이션

4. 장바구니

  • 주문은 장바구니를 통해서만 가능
  • 수량 조정, 일부 삭제, 전체 삭제
  • 장바구니에서 상품 옵션 변경 가능

5. 결제

  • 주문과 결제는 별도의 도메인으로 구분
  • 주문 데이터 생성 이후 결제 요청, 결제 실패시 결제 데이터는 생성되지 않음
  • PortOne API를 활용해 실제 결제 로직을 구현

6. 주문

  • 결제수단
    • PortOne API를 통해 다양한 플랫폼에서의 결제
    • 포인트 결제
      • 1원 단위로 자유롭게 사용 가능
  • 배송
    • 주소는 우편번호, 도로명 주소, 상세주소로 구성
    • 요청사항은 선택사항으로 입력
    • 회원 가입시 입력했던 배송지를 기본 배송지로 사용 가능
    • 50,000원 이상 구매 시 배송비 무료
  • 환불 요청
    • 주문 상태가 신규 주문일 때에만 가능
    • 사용자가 환불 요청을 할 시에 환불 사유와 함께 주문 상태가 환불 요청으로 변경
    • 관리자는 환불 요청 받은 주문을 처리하거나 환불 요청 처리 자체를 취소할 수 있음
  • 주문 조회
    • 주문한 상품 명으로 검색 가능
    • 주문 상태가 목록에서 표시

7. 포인트

  • 결제시 포인트를 현금으로 사용 가능
  • 구매 확정 시 상품 금액의 1%를 포인트로 적립
  • 리뷰 작성 시 500P 적립
  • 멤버십 등급에 따라 매월 포인트 혜택 지급

8. 리뷰

  • 리뷰 작성
    • ‘구매 확정’된 주문 상세에 대해 리뷰 작성 가능
    • 1~5점 평점 선택 필수
    • 내용 20~500자 작성 필수
    • 리뷰 작성 시 500포인트 지급
  • 상품별 리뷰 목록
    • 상품의 전체 리뷰 조회
    • 최신순/높은 평점순/낮은 평점순 조회
    • 상품별 별점 평균 조회
    • 3줄 초과 시 더보기/줄이기 기능
  • 나의 리뷰 조회
    • 해당 회원이 작성한 리뷰 조회
    • 3줄 초과 시 더보기/줄이기 기능

9. 문의

  • 상품별 문의 목록
    • 상품의 전체 문의 조회
    • 비밀글로 설정한 문의는 ‘비밀글입니다’로 표시, 상세보기 불가
    • 답변이 작성된 문의는 답변완료 배지 표시
  • 문의 작성
    • 사이즈, 재입고, 배송, 상품상세 중 유형 옵션 선택
    • 체크박스로 비밀글 여부 설정
  • 문의 상세
    • 문의 작성자만 문의 삭제 가능
    • 관리자만 문의에 답변 작성 가능
  • 나의 문의 조회
    • 자신이 작성한 문의만 조회
    • 답변이 작성된 문의는 답변완료 배지 표시

10. 채팅

  • 버튼식 상담
    • 정해진 질문에는 자동 답변
    • 상담 내역은 Local Storage 저장
  • 1:1 상담
    • 상담사 연결 버튼을 누르면 ADMIN 페이지로 요청 전송
    • 요청이 수락되면 1:1 상담 시작



🛠️ 커밋 컨벤션

  • 타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자로 한다.
  • "태그: 제목"의 형태이며, : 뒤에만 공백이 있음에 유의
태그 이름 설명
Feat 새로운 기능을 추가할 경우
Fix 버그를 고친 경우
Design CSS 등 사용자 UI 디자인 변경
Style 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
Refactor 프로덕션 코드 리팩토링
Docs 문서를 수정한 경우
Rename 파일 or 폴더명 수정하거나 옮기는 경우