Main Project : 나만의 쇼핑몰 만들기
프로젝트 설명
- 구글, 카카오, 네이버 소셜로그인 과 로그아웃 및 검증, 아임포트를 통한 결제와 결제취소, 트랜잭션 결제 검증, 썸네일 생성 구현 가능
- 인증과 비인증 회원 권한 다르게 설정
배포주소
https://daseul.shop
기술스택
- nodejs
- typescript
- mysql
- kubernetes
- elasticsearch
- redis
- logstash
- nest
- GCP
- Graphql
- Docker
- Axios
ERD 설계

파이프라인

프로젝트 설치 방법 & 실행 방법
- click Use this template and use this template!
- Install yarn packages
폴더구조
📦main-project
┣ 📂backend
┃ ┣ 📂elk
┃ ┃ ┣ 📂elasticsearch
┃ ┃ ┣ 📂kibana
┃ ┃ ┗ 📂logstash
┃ ┃ ┃ ┣ 📜logstash.conf
┃ ┃ ┃ ┗ 📜mysql-connector-java-8.0.28.jar
┃ ┣ 📂src
┃ ┃ ┣ 📂apis
┃ ┃ ┃ ┣ 📂auth
┃ ┃ ┃ ┃ ┣ 📜auth.controlloer.ts
┃ ┃ ┃ ┃ ┣ 📜auth.module.ts
┃ ┃ ┃ ┃ ┣ 📜auth.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜auth.service.ts
┃ ┃ ┃ ┣ 📂file
┃ ┃ ┃ ┃ ┣ 📜file.module.ts
┃ ┃ ┃ ┃ ┣ 📜file.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜file.service.ts
┃ ┃ ┃ ┣ 📂iamport
┃ ┃ ┃ ┃ ┗ 📜iamport.service.ts
┃ ┃ ┃ ┣ 📂orderStatus
┃ ┃ ┃ ┃ ┗ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜orderStatus.entity.ts
┃ ┃ ┃ ┣ 📂payment
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜payment.entity.ts
┃ ┃ ┃ ┃ ┣ 📜payment.module.ts
┃ ┃ ┃ ┃ ┣ 📜payment.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜payment.service.ts
┃ ┃ ┃ ┣ 📂product
┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┣ 📜createProduct.input.ts
┃ ┃ ┃ ┃ ┃ ┗ 📜updateProduct.input.ts
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜product.entity.ts
┃ ┃ ┃ ┃ ┣ 📜product.module.ts
┃ ┃ ┃ ┃ ┣ 📜product.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜product.service.ts
┃ ┃ ┃ ┣ 📂productAddInformation
┃ ┃ ┃ ┃ ┗ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜productAddInformation.entity.ts
┃ ┃ ┃ ┣ 📂productAllergy
┃ ┃ ┃ ┃ ┗ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜productAllergy.entity.ts
┃ ┃ ┃ ┣ 📂productImage
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜productImage.entity.ts
┃ ┃ ┃ ┃ ┣ 📜productImage.module.ts
┃ ┃ ┃ ┃ ┣ 📜productImage.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜productImage.service.ts
┃ ┃ ┃ ┣ 📂productMainCategory
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜productMainCategory.entity.ts
┃ ┃ ┃ ┃ ┣ 📜.DS_Store
┃ ┃ ┃ ┃ ┣ 📜productMainCategory.module.ts
┃ ┃ ┃ ┃ ┣ 📜productMainCategory.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜productMainCategory.service.ts
┃ ┃ ┃ ┣ 📂productSubCategory
┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┗ 📜createSubCategory.input.ts
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜productSubCategory.entity.ts
┃ ┃ ┃ ┃ ┣ 📜productSubCategory.module.ts
┃ ┃ ┃ ┃ ┣ 📜productSubCategory.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜productSubCategory.service.ts
┃ ┃ ┃ ┣ 📂user
┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┣ 📜createUser.input.ts
┃ ┃ ┃ ┃ ┃ ┗ 📜updateUser.input.ts
┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┗ 📜user.entity.ts
┃ ┃ ┃ ┃ ┣ 📜user.module.ts
┃ ┃ ┃ ┃ ┣ 📜user.resolver.ts
┃ ┃ ┃ ┃ ┗ 📜user.service.ts
┃ ┃ ┃ ┗ 📜.DS_Store
┃ ┃ ┣ 📂common
┃ ┃ ┃ ┣ 📂auth
┃ ┃ ┃ ┃ ┣ 📜gql-auth.guard.ts
┃ ┃ ┃ ┃ ┣ 📜gql-user.param.ts
┃ ┃ ┃ ┃ ┣ 📜jwt-access.strategy.ts
┃ ┃ ┃ ┃ ┣ 📜jwt-refresh.strategy.ts
┃ ┃ ┃ ┃ ┣ 📜jwt-social-goole.strategy.ts
┃ ┃ ┃ ┃ ┣ 📜jwt-social-kakao.strategy.ts
┃ ┃ ┃ ┃ ┗ 📜jwt-social-naver.strategy.ts
┃ ┃ ┃ ┣ 📂filter
┃ ┃ ┃ ┃ ┗ 📜http-exception.filter.ts
┃ ┃ ┃ ┣ 📂graphql
┃ ┃ ┃ ┃ ┗ 📜schema.gql
┃ ┃ ┃ ┗ 📂libraries
┃ ┃ ┃ ┃ ┗ 📜utils.ts
┃ ┃ ┣ 📜.DS_Store
┃ ┃ ┣ 📜app.module.ts
┃ ┃ ┗ 📜main.ts
┃ ┣ 📂test
┃ ┃ ┣ 📜app.e2e-spec.ts
┃ ┃ ┗ 📜jest-e2e.json
┃ ┣ 📜.DS_Store
┃ ┣ 📜.dockerignore
┃ ┣ 📜.env
┃ ┣ 📜.eslintrc.js
┃ ┣ 📜.gitignore
┃ ┣ 📜.prettierrc
┃ ┣ 📜Dockerfile
┃ ┣ 📜README.md
┃ ┣ 📜docker-compose.yaml
┃ ┣ 📜gcp-file-storage.json
┃ ┣ 📜nest-cli.json
┃ ┣ 📜package.json
┃ ┣ 📜tsconfig.build.json
┃ ┣ 📜tsconfig.json
┃ ┣ 📜yarn-error.log
┃ ┗ 📜yarn.lock
┣ 📂frontend
┃ ┣ 📂img
┃ ┃ ┣ 📜back-ground.jpg
┃ ┃ ┣ 📜facebook.png
┃ ┃ ┣ 📜google.png
┃ ┃ ┣ 📜kakao.png
┃ ┃ ┣ 📜menu-back-ground.jpg
┃ ┃ ┣ 📜naver.png
┃ ┃ ┣ 📜starbucks.png
┃ ┃ ┗ 📜user-back-ground.jpg
┃ ┣ 📂login
┃ ┃ ┣ 📜index.css
┃ ┃ ┗ 📜index.html
┃ ┣ 📜.DS_Store
┃ ┗ 📜payment.html
┣ 📂functions
┃ ┣ 📜generateThumbnail.js
┃ ┗ 📜review.generateThumbnail.js
┣ 📜.DS_Store
┣ 📜tree.txt
┗ 📜yarn.lock
env
- Google, naver, kakao : Client ID, Client secret, Client callback
- Iamport : IMP key, IMP secret
- GCP : Storage bucket, Storage key filename, Storage projet ID
- Token : Access token, Refresh token
API 설계
기능 | 요청 방법 |
---|
Fetch | Query{API name } {request col} |
Create | Mutation{API name: contents} {request col} |
Update | Mutation{API name: contents} {request col} |
Delete | Mutation{API name: contents} {request col} |
login | Mutation{API name: contents} {request col} |
logout | Mutation{API name: contents} {request col} |