※ 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 프로젝트] 사용자 / 판매자 카카오 로그인하기
[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 적용
'프로젝트' 카테고리의 다른 글
| [Spring Boot & JPA 프로젝트] 상품등록 / 파일업로드(다중X) (0) | 2022.08.17 |
|---|---|
| [SpringBoot & JPA 프로젝트] enum (0) | 2022.08.17 |
| [SpringBoot & JPA 프로젝트] common/message (0) | 2022.08.11 |
| [SpringBoot & JPA 프로젝트] requestRejectedException / Error executing DDL / FileNotFoundException (0) | 2022.08.11 |
| [Spring Boot & JPA 프로젝트] 머스테치 Mustache (0) | 2022.08.02 |
