프로젝트

[SpringBoot & JPA 프로젝트] 뜨개장터 소개

sian han 2022. 8. 17. 05:13

 

※ SpringBoot & JPA 개인 프로젝트

 

Github : https://github.com/HAN-SEOHYUN/KnitMarket

 

 

🏹 서론

더보기

6개월 과정의 국비 학원 과정이 끝나고 취업 준비를 해야함이 맞으나

혼자서 온전히 서비스를 만드는 토이프로젝트를 진행해보고싶었다.

 

개발을 배우고 작은 기능을 구현 할 수 있게된 시점부터

만들어보고싶다고 생각해왔던 서비스가 있었고,

지금이 아니면 이 서비스는 앞으로도 머리속에서 나오지 못할 것 같았다.

( 취업 후에는 아무래도 회사 업무를 우선적으로 배워야하니 현실적으로 불가능하다고 생각했기때문 )

 

학원에서 진행했었던 마지막 팀프로젝트는 스프링부트 & JSP & Mybatis & Oracle 을 이용했었는데,

똑같은 환경에서 프로젝트를 만들면 재미없으니 새로운걸 시도해보기로했다.

 

프로젝트를 본격적으로 시작하기 전

인프런에서 "호돌맨의 요절복통 개발쇼" 강의와

이동욱님의 스프링부트와 AWS로 혼자 구현하는 웹서비스 책을 읽고 JPA 라는게 있다는걸 알았고,

 

실제로 런칭해보는 것을 목표로 프로젝트를 시작했다.

 

 

 

 

📍기획배경

더보기

친구 어머님께서 취미로 뜨개질을 하셔서

그동안 나도 친구를 통해 여러 작품을 선물받았었다.

당장 판매해도 될 만큼 솜씨가 좋으시지만,

어디에 팔아야될지 몰라서 주변에 나눠주신다고 하셨다.

 

뜨개상품을 판매하는 사이트

그거 내가 만들 수 있겠는데 ? 생각이들고부터 머릿속에서 떠나질않더라

 

어머님께서 완성된 제품을 판매하면서

더 즐겁게 뜨개질을 하실 수 있었으면 하는 마음으로 시작했다.

 


 

https://knitmarket.shop

 

 

⚙️개발 환경

  운영체제 : Windows

  통합개발환경(IDE) : IntelliJ

  빌드 툴 : Gradle

  스프링부트버전 : 2.6.7

  JDK 버전 : jdk1.8.0_321

 

 

 

🛠️프로젝트 기술스택

  프론트엔드 : HTML, CSS, JS, BootStrap, Thymeleaf

  백엔드 : Spring Boot, Spring Data JPA

  데이터베이스 : Hibernate, MariaDB 

  배포 : AWS EC2, S3, RDS, ELB

 

 

 

 

🔗프로젝트 소개

미니쇼핑몰 형식의 '뜨개장터' 웹서비스 구현 프로젝트

유니크한 뜨개질 아이템을 구매할 수 있고, 누구나 판매자가 되어 본인의 상품을 판매할 수 있다

 

 

 

 

✅ 프로젝트 목표

  - JPA 학습

  - OOP

  - RequestDto와 ResponseDto를 설계하여 Entity를 전달받거나 Entity를 반환하지 않는다.

  - 가능한한 Service 에서 모든 비즈니스로직을 처리한다.

  - AWS 서비스를 이용해 배포한다.

  - 실제 서비스를 하면서 발생하는 문제점을 발견하고 보완한다.

 

 

회원

  • 카카오 계정을 통한 로그인 및 회원가입 / 로그아웃 (카카오 로그인 API)
  • 판매자 / 구매자 / 를 구분하여 특정 페이지에 접근할 수 있는 권한 부여

 

 

용자

  • 내 정보 조회 - 이름 / 이메일 / 전화번호
  • 내 주소 등록 / 수정 가능 (카카오 우편번호 API)
  • 상품 구매 - 주소 정보가 등록된 사용자만 구매 가능 (리다이렉트)
  • 장바구니, 주문내역에 내용이 없을 경우 '휑' 페이지 출력

 

 

판매자

  • 내 정보 조회 - 이름 / 이메일 / 전화번호
  • 판매자 정보 조회, 등록, 수정 - 상호명 / 계좌은행 / 계좌번호 / 예금주
  • 내 상품 목록 조회 - 판매여부가 확인 가능하며, 판매되었을 경우 배송정보 확인 페이지로 넘어가는 버튼 생성
  • 판매된 상품의 배송정보 조회
  • 상품 등록 - 판매자 정보가 등록된 판매자만 상품 등록 가능 (리다이렉트)
  • 상품 정보 수정 및 삭제 - 본인의 상품에 대해서만 가능

 

 

상품

  • 상품이미지를 포함한 상품정보 등록 (S3 이미지 서버 이용)
  • 상품목록에서 구매완료된 상품은 품절 표시되며 구매 & 삭제 불가

 

 

주문 및 결제

  • 토스페이먼츠 결제 API 사용
  • 주문 내역 조회 - 주문목록(list), 주문상세정보(detail)

 

 

장바구니

  • 회원가입 시 장바구니 생성됨
  • 장바구니 상품 한개 삭제, 여러개 삭제          
  • 장바구니 상품 주문
  • 장바구니 내 물품은 결제완료 후 장바구니에서 삭제

 

 

문의

  • 사이트 내 챗봇을 통해 관리자에게 문의
  • 카카오톡 플러스 친구 채널을 통해 관리자에게 문의

 

 

 

 

 

 

🔨DB 설계

 

 

 

📺스토리보드

더보기

▶ 메인페이지

/index

 

▶ 사이트 소개

/introduction

뜨개쥔장 is me 여요

만만치않은 뜨개질 값 때문에 뜨개질은 꽤나 돈 드는 취미생활이라고 생각하는데

뜨개질값 마련하면서 취미 영위하시라는 .. 의도로 쓴 글인데 잘 드러납미까 ? ..

 

 

▶ 이용방법

/guide

친절하지않은 사이트 이용방법 가이드 ... 

챗봇으로 문의해주세요🙏

 

 

 

▶ 이용약관

/policy

 

 

 

▶ 내 정보

/mypage/info

사용자로 로그인 하면 주소 확인가능

판매자로 로그인하면 상호명 확인가능

 

 

 

▶ 판매자 : 상품등록

/item/register

 

 

 

▶ 사용자 : 상품상세

/item/detail

판매자 상품상세 페이지 접속 시

수정하기 | 삭제하기 버튼으로 바뀜

 

 

▶ 사용자 : 장바구니

/cart/cartList

휑 ~

 

 

 

▶ 판매자 : 내 상품목록

/mypage/myitem

 

판매자가 본인이 올린 상품 목록 확인 가능

판매된 상품은 '판매완료' 로 표시되고, 배송정보를 확인 할 수 있는 버튼이 생김

 

 

 

▶ 판매자 : 배송정보확인

/mypage/orderInfo

판매자의 배송정보 확인을 위함

 

 

▶ 사용자 : 주문하기

/order

 

 

▶ 사용자 : 결제완료

/order/success

 

 

▶ 사용자 : 결제실패

/order/fail

 

▶ 사용자 : 내 주문내역

/mypage/orderList

 

 

 

 

 

🕐Time Log

  - 디스코드에서 '공부열차' 라는 스터디를 운영하고있다.

    'to-do list' 이름의 게시판을 개설해 매일 [오늘의 목표] 를 적은 후 코딩을 시작하고 있는데,

    아래는 프로젝트 시작 이후로 작성한 일 단위 목표이다.

 

더보기

📃 0714
 - 새 프로젝트 공부시작

 

📃 0717
 - 강의 듣고 글쓰고 코드정리
 - 책 읽으면서 블로그에 정리
 - 서버 배포 테스트 피드백 받고 수정

 

📃 0722
 - aws 책 읽기
 - JPA 강의 2강이상 듣기 ✅
 - DB 설계 킵고잉 
 - mysql 설치 ✅ 

 

📃 0723
 - aws 책 일단 완독
 - JPA 강의 3강이상 듣고 필기
 - exerd 제작 (mysql 맞춰서)

 

📃 0724
 목표 : JPA 이해하기
 - JPA 김영한님 강의 다 듣기
 - 3강이상 !! 듣기 !! 일단듣기
 - AWS 완독후 2회독

 

📃 0725
  - JPA 김영한님 강의듣기
  - 인프런강의듣기

 

📃 0726
  - AWS 책 다 읽기
  - 낼부터 프론트 작업할수있게 공부 끝내기

 

📃 0802 
  - 머스테치 => 타임리프로 다시변경
  - index 페이지 구현 완료
  - 상단바 / 사이드바 완성

 

📃 0804
  - index 페이지 구현 완료

 

📃 0804
  - velog 보기
  - 판매자 상품 등록 페이지 디자인
  - 등록 기능 구현

 

📃 0806
  - 글등록 성공 제발제발요
  - 등록 페이지 예쁘게 디자인
  - 카드등록

 

📃 0808
  - 프로젝트 블로그 정리
  - User 까지 끼워서 아이템 등록하기

 

📃 0809
  - 오류해결하기 .. . . .하
  - kakao 로그인 !

 

📃 0810
  - nullpointexception 확인 (로그찍으면서)
  - kakao 로그인 user / seller 분리
  - item 멤버변수 seller 추가

 

📃 0811
  - user seller 분리

 

📃 0812
  - css 옙브게
  - 이미지 등록 성공

 

📃0813
  - 이미지 업로드 !!!

 

📃0815
  - 이미지 업로드 제발요

 

🔔0816
  - 단일이미지 업로드 포스팅 작성

 

📃0818
  - '상품목록에서 구매완료된 상품은 품절상품으로 띄워 구매를 막는다' 이거해결
  - 상품상세페이지 구현
  - 상품정보수정

 

📃0819
  - 상품정보수정
  - SELLER 랑 FILE 정보 안들어감 (기존정보 싹 지우고 INSERT 됨. 변경된 정보만 UPDATE 재설정)
  - 파일정보 뿌리고, 수정

 

📃0823 
  - 수정 !!! 끝내기 (파일 제외, 파일 새로업로드한다는 조건으로)
  - 마라샹궈소스 사서 집가기
  - 점심시간 수영장 

 

📃0824
  - delFlag 로 상품삭제
  - 상품목록 (isDelete == false || sellStatus =="SELL" ) 솎아내기 ~ 
  - 장바구니 담기 (추가)
  - orphanRemoval = true (고아객체) / item - file 적용가능할듯

 

📃0825
  - NullPointerException 해결
  - 장바구니에 상품여러개담기
  - 서울도서관 책 반남 / http 책 대출
  - 안졸리면 헌혈까지

 

📃0826
  - 장바구니 목록
  - http 책 읽고 블로그 정리
  - 장바구니 목록 X 추가 (ajax) => 개별삭제
  - 장바구니 목록 css (footer 좀 어떻게 해보자 .. )
  - 장바구니 목록 전체 삭제 (비우기 버튼)
  - 판매자 상품목록 (top dropdown 권한설정 )

 

🔔0827
  - 판매자 상품목록에 a태그 걸기
  - 주소등록 (주소엔티티생성해서 USER 랑 연관관계 맺기) (카카오 map API 사용)
    + 구매하기 버튼 클릭 시 주소 여부 체크
  - 책읽기
  - 커밋메세지 어떤식으로 작성하는지 배워보기

 

 

📃0828
  - 마이페이지
      - user 정보 set (이름, 이메일, 회원유형)
      - 주소정보 (등록/수정버튼) - 일반고객
      - 가게이름정보 (등록/수정버튼) - 판매자 고객

주소정보 수정을 먼저하고 !
회원 / 판매자 분리해서 view 띄우고
판매자에 가게이름 컬럼 추가

 

🔔0829
  - mypage view 안뜨는거 에러부터 잡기

 

📃0902
  - 가게명 등록 체크
  - 가게명 수정 테스트 코드작성 / 완성
  - http 책 독후감 쓰기
  - 주문하기 화면 구현

 

📃0903
  - 주문테이블 설계

 

📃0905
  - 장바구니에서 주문하기 ok
  - 결제 API 알아보기 (카카오페이)
  - 네이버 로그인 알아보기
  - 서울도서관 책 예약하기 (메모장참고)
 📍 주문 전 최종확인 controller 간 데이터전달체크

  - 결제하기 상태변경
      1.장바구니 비우기
      2. item sellstatus == soldout
      3. orderstauts : cancel > order

 

📃0908
결제모두완료
Ordersuccess페이지 완료
Orderlist페이지완료
전체 css손보기

 

📃0909
  - 전체 css 손보기
    - index , login, detail
  - 인터셉터 만들기 
  - error 404 , 500 페이지 추가

 

🔔0910
  - API 싹 수정하기
  - 인터셉터 완료
  - 네이버 로그인
  - AWS 배포 알아보기
  - 전체 CSS 완료 (개발바닥보면서)

 

📃0911
 - css 완료 
 - 한땀한땀 addPathPatterns API 추가 & 테스트
  - 서버 배포 테스트

 

📃0913
  - 프로젝트 local / AWS 용 분리하기 (깃허브도)
  - 가비아 DNS 수시 체크
  - 코드 리뷰

 

📃0914
  - CartList 주문하러가기 작동안함
  - 주문목록에 orderStatus ORDER 필터링
  - 페이지별 min-height
  - 사이트 소개 레이아웃짜기
  - 서버에 홈페이지 띄워보기

 

📃0915
  - 빌드부터 하고 시작
  - 로고 새 커미션 찾아보기
  - 배경 심심함
  - kakao 리다이렉트 URL 수정
  - bottom 수정
  - 챗봇 API 연동
  - 사업자 등록증 어떻게 등록 ?
  - https 설정

 

📃0917
  - 내 상품 휑 추가
  - 상품 삭제 : 삭제하시겠습니까 ?
  - 404, 500 페이지
  - INDEX 상품정렬 수정
  - 사업자 등록증 발급

 

📃0921
  - 이미지 업로드
 - 3시간까지만 해보고 안되면  404 500 먼저
  - 상품금액 숫자만 입력되게 js 수정

 

📃0922
  - s3 마무리

 

📃0923
  - text area 글자 수 맞게 늘어나기
  - 상품이름 글자 수 제한
  - 사진 엑박 기준 알아내서 제한걸기
  - 사진 첨부해야 넘어가게
  - 사업자등록증
     - 카카오 : 전화번호 받아오기
     - 토스 : 결제
  - 사이트 소개 디자인
  - orderFail 디자인
  - 주소등록 현관문 출입방법 없음 default

 

📃0925
 - 엑박 기준이 몰까 .. ?
 - 토스 요청사항 충족해서 ppt 만들어 보내기
 - 환불규정 page
 - register : 배송비 포함금액문구 추가

 

 

📃0926
- test 로그인 로직짜기
- ppt 만들어서 보내기
무조건 월요일 내 완성 ~!!

 

📃0928
  - 전화번호 추가
  - 정리하기
    - S3 사용기
    - 배포 후 인가받은것들 (사업자등록증, 토스, 카카오)
    - 인터셉터, error page
    - 테스트 코드 작성

 

📃0929
  - 프로젝트 소개 글 작성 (티스토리)
  - 전체 test
  - github readme 파일 작성

📃1002
  - 테스트주도개발 읽기


📃1003
  - README 작성
  - 판매자가 배송정보 확인하는 페이지 생성
  - https 변경하기

 


📃1004
- 코딩하지말고 ~~ 
  - 스토리보드 수정
  - README 작성
  - 자소 서 . . 작 성 . . . . .

 

 

++ 프로젝트 끝날때까지 계속 수정예정

 

 

 

 

 

🕐 제작기간

    2022-08-01 ~ 2022-09-30

     - 실제로 운영중인 사이트이기 때문에 종료 이후에도 수정작업은 계속 진행중이다.

 

 

 

 

 

🧲 프로젝트 관련 포스팅

아래는 프로젝트 진행 중 배운 것들을 정리한 글입니다. 

 

 

 

[Spring Boot & JPA 프로젝트] 머스테치 Mustache

 

[SpringBoot & JPA 프로젝트] requestRejectedException / Error executing DDL / FileNotFoundException

 

[SpringBoot & JPA 프로젝트] common/message

 

[SpringBoot & JPA 프로젝트] enum

 

[SpringBoot & JPA 프로젝트] 사용자 / 판매자 카카오 로그인하기

 

[Spring Boot & JPA 프로젝트] 상품등록 / 파일업로드(다중X)

 

[SpringBoot & JPA 프로젝트] 판매자 : 상품삭제하기 (delFlag)

 

[SpringBoot & JPA 프로젝트] 장바구니에 상품 추가하기 / 삭제하기

 

[SpringBoot & JPA 프로젝트] 주문테이블 설계

 

[SpringBoot & JPA 프로젝트] 인터셉터 / 404,500 error page

 

[SpringBoot & JPA 프로젝트] AWS EC2 / AWS RDS, IAM

 

[ SpringBoot & JPA 프로젝트 ] AWS S3 이미지 서버

 

[SpringBoot & JPA 프로젝트] 배포 후 실제 웹서비스 운영 단계로 나아가기

 

[ SpringBoot & JPA 프로젝트 ] HTTP => HTTPS / AWS 로드밸런서, 타겟그룹, ACM

 

[Github] GitHub 보안파일 커밋 내역 삭제하기

 

[SpringBoot & JPA 프로젝트] 아쉬운점 & 보완할점

 

[SpringBoot & JPA 프로젝트] 토스페이먼츠 카드사심사 후 라이브 API 적용