- 오랜만에 개인 포트폴리오를 만들어보려고 한다.
- 이전에 만든 2개의 프로젝트가 있긴 하지만, 이제 막 배우기 시작할 때 진행했던 프로젝트인지라 허술한 부분도 많고 너무 기능 구현에만 신경쓰는 바람에 중요한 부분을 놓치고 간 느낌이 들어 새로운 마음으로 다시 시작해보려 한다.
- 이전 프로젝트를 진행하면서 그래도 좀 배운게 있으니, 우선 프로젝트 명세서부터 작성해보자.
- 명세서에 포함될 내용은 다음과 같다.
- 아이템 선정
- 개요
- 요구사항 분석
- DB 설계
- API 설계
📝 아이템 선정
- 이전에 해본 프로젝트 주제는 게시판(블로그)과 SNS였다.
- 그래서 이번에는 좀 획기적인 주제로 프로젝트를 진행하고 싶었으나, 딱히 아이디어가 떠오르지도 않고 혼자서 구현할 수 있을지도 애매해서 차라리 정석적인 주제로 프로젝트를 진행하는 것이 낫다고 생각했다.
- 그렇게 해서 결정한 프로젝트는 바로 쇼핑몰이다. 그 중에서도 옷을 판매하는 쇼핑몰을 구현해볼 것이다.
- 웹의 기본 소양이 되는 간단한 CRUD부터 시작하여 여러가지 기능을 추가해가며 진행해볼 예정이다.
📝 개요
- 프로젝트 명: Baeg-won Clothing Gallery
- 개발 인원: 1명(Baeg-won)
- 개발 기간: 2023.07.01 ~
- 주요 기능
- 사용자 관련: 회원가입 및 로그인(OAuth2.0 포함), 회원가입 및 로그인 유효성 검사(+중복 검사), 회원 정보 수정, 회원 등급
- 상품 관련: CRUD 기능, 카테고리, 페이징 및 검색, 주문수, 문의 및 후기, 장바구니, 즐겨찾기
- 주문 관련: 배송지 설정, 결제 방법 선택
- 게시판 관련: CRUD 기능, 카테고리, 페이징 및 검색, 조회수
- 관리자 관련: 상품 등록 및 공지사항 작성
- 개발 언어: Java 11
- 개발 환경: Spring Boot 3.1.1, Gradle, Spring Data JPA, Vue.js
- 데이터베이스: MySQL
- 형상관리 툴: GitHub
📝 요구사항 분석
- 회원가입
- 유효성 검사
- 아이디는 이메일 형식으로 지정(회원가입 시 이메일 인증 필요)
- 비밀번호는 8~16자 사이로, 영문과 숫자, 특수문자를 포함
- 비밀번호 확인을 위한 입력칸 필요
- 닉네임은 2~10자 사이로, 특수문자를 제외한 한글, 알파벳 대소문자, 숫자로 구성
- 필수 입력 칸이 공백이라면 그에 따른 예외 메시지 보여주기
- 중복 확인
- 이미 존재하는 아이디로 회원가입을 진행할 경우 그에 따른 예외 메시지 보여주기
- 모든 검사를 통과했다면 회원으로 등록한 후 로그인 페이지로 이동
- 유효성 검사
- 로그인
- 로그인을 하지 않은 경우 아래의 페이지만 이용 가능하며, 이 외의 페이지로 접속할 경우 로그인 페이지로 강제 이동
- 회원가입 페이지
- 로그인 페이지
- 메인 페이지
- 상품 목록 페이지
- 상품 상세보기 페이지
- 상품 주문 페이지
- 게시판 페이지
- 장바구니 페이지
- 유효성 검사
- 아이디와 비밀번호가 일치하지 않을 경우 그에 따른 예외 메시지 보여주기
- 모든 검사를 통과했다면 로그인 처리 후 메인 페이지로 이동
- OAuth 2.0를 통한 소셜 로그인(구글, 카카오, 네이버, 페이스북 등)
- 로그인을 하지 않은 경우 아래의 페이지만 이용 가능하며, 이 외의 페이지로 접속할 경우 로그인 페이지로 강제 이동
- 회원정보 수정
- 회원정보 수정은 비밀번호만 가능
- 수정란이 공백인 경우 그에 따른 예외 메시지 보여주기
- 수정할 때에도 동일하게 유효성 검사 적용
- 상품
- 재고가 없을 경우 "장바구니에 담기" 버튼 비활성화
- 상품 색상, 사이즈, 배송지 주소 등 주문에 필요한 정보를 입력하지 않은 경우 그에 따른 예외 메시지 보여주기
- 문의 및 후기
- 후기는 상품을 구매한 로그인 회원만 작성 가능
- 문의나 후기 작성 시 빈칸 또는 공백인 경우 그에 따른 예외 메시지 보여주기
- 후기는 사진(선택) 및 별점을 포함할 수 있음
- 문의 및 후기 수정, 삭제는 작성자만 가능
- 장바구니
- 상품을 고를 시 장바구니에 담김
- 장바구니에서는 지금까지 담은 상품 목록과 금액 등의 정보를 확인할 수 있음
- 장바구니에서 결제 버튼을 눌러 주문 페이지로 이동
- 장바구니에서 주문할 상품의 옵션 및 수량 변경 가능
- 주문
- 배송지 주소 설정시 사용자가 기본 배송지를 설정해놓았다면, 자동으로 주소 설정
- 배송 요청사항 작성 가능
- 결제 방법 선택하여 최종 결제
- 회원 등급 및 쿠폰, 이벤트 여부에 따라 할인 적용
- 게시판
- 게시글은 작성 및 수정, 삭제는 관리자만 가능
- 게시글 작성, 수정 시 제목 또는 내용이 빈칸 또는 공백인 경우 그에 따른 예외 메시지 보여주기
📝 DB 설계
- 비밀번호는 암호화를 할 경우 길이가 늘어나기 때문에 크기를 넉넉히 잡아줄 것이다.
- 회원 탈퇴시 실제로 해당 회원의 데이터를 지울 경우 회원과 연관된 다양한 데이터에 영향을 주거나 오류가 발생할 수 있기 때문에 따로 탈퇴 여부 필드를 두어 분류할 것이다.
- 상품 역시 판매 여부 필드를 따로 두어 상품 판매 종료 시 해당 상품의 데이터를 지우지 않고 이를 관리할 것이다.
- 주문의 경우 하나 이상의 상품이 포함될 수 있기 때문에 이는 주문 상세 테이블을 별도로 생성하여 해결하였다.
- 상품 번호를 가져오는데도 가격을 따로 저장한 이유는 주문했을 당시의 상품 가격과 현재의 상품 가격이 달라질 수 있기 때문이다.
- 장바구니 역시 하나 이상의 상품이 포함될 수 있기 때문에 장바구니 상세 테이블을 따로 생성하여 해결하였다.
- 댓글 종류는 문의와 후기가 있는데, 둘 모두에 공통으로 포함되는 필드가 다소 존재하여, 하나로 통합한 뒤 따로 필드를 두어 분류해주었다.
📝 API 설계
- 원래는 API 설계를 먼저 작성하고나서 프로젝트를 진행하려 하였으나, 작성하다보니 확실하지 않은 부분이 좀 많아서 이 부분은 개발을 진행하면서 추가할 예정이다.
'🚗 Backend Toy Project > Baeg-won Clothing Gallery' 카테고리의 다른 글
[Baeg-won Clothing Gallery] 5. SALE, CONTACT 페이지 구현 (0) | 2023.07.15 |
---|---|
[Baeg-won Clothing Gallery] 4. CLOTHING, FOOTWEAR, ACCESSORIES 페이지 구현 (0) | 2023.07.14 |
[Baeg-won Clothing Gallery] 3. BRANDS 페이지 구현 (0) | 2023.07.08 |
[Baeg-won Clothing Gallery] 2. SHOP 페이지 구현 (0) | 2023.07.06 |
[Baeg-won Clothing Gallery] 1. 메인 페이지 구현 (0) | 2023.07.04 |