Code Monkey home page Code Monkey logo

voluntier-server's Introduction

Nest Logo

Voluntier

대한민국의 반려동물 시장의 규모가 커지면서, 반려동물을 가족처럼 여기는 이른바 ‘펫펨(pet+family)족’도 빠르게 늘고있습니다. 흔히 도둑고양이라 불리던 인식도 지켜주어야 할 길냥이로 인식이 바뀌고 있듯, 본인의 반려동물을 향한 관심과 사랑 뿐만 아니라, 유기동물에 대한 관심이 높아지고 입양사례도 늘어나고 있습니다.
Volunteer + Tier의 합성어로 영어로 봉사활동을 의미하는 Volunteer와 독일어로 동물을 의미하는 Tier의 합성어로, VolunTier 🐶🐈‍⬛ 는 본인의 반려동물만을 사랑하는 것이 아닌 “도움이 필요한 모든 동물들에게 사랑과 관심을 베푸는 문화” 를 만들어가고자유기동물 봉사단체와 봉사자를 연결해주는 공간을 제공하고,도움이 필요한 동물들에게 후원할 수 있는 플랫폼을 제공합니다.

팀원 소개

이름 역할 담당 부분
김아름 팀장, 프론트엔드 PM, Main Page,Text Editor/Viewer 커스텀,animation 작업,frontend 배포, Docker
최창서 프론트엔드 User/Login, 권한분기, SocketIO & 채팅알림, 검색 기능, 결제 기능 구현, 캐러셀
권서형 프론트엔드 @media 반응형(모바일), 레이아웃&globalStyles, 지도 API 현위치 불러오기&커스텀, Socket IO, modal 커스텀, 마이페이지 구현
김지웅 백엔드 검색, 인증, 유저, 게시글, 정기 메일, 캡챠, 봉사 신청
송준영 백엔드 결제, 이미지 업로드, 상품구매, 채팅, 상품, 찜
이지현 디자이너

Frontend 기술스택

Backend 기술스택

ETC 기술스택

Flow Chart

ERD

API

서버 폴더구조

├── Dockerfile
├── README.md
├── docker-compose.prod.yaml
├── docker-compose.prod2.yaml
├── docker-compose.yaml
├── elk
│ └── logstash
│       ├── logstash.conf
│       ├── logstash.prod.conf
│       ├── mysql-connector-java-8.0.28.jar
│       └── post_template.json
├── gcp-storage.json
├── nest-cli.json
├── package-lock.json
├── package.json
├── src
│   ├── apis
│   │   ├── auth
│   │   │   ├── auth.controller.ts
│   │   │   ├── auth.module.ts
│   │   │   ├── auth.resolver.ts
│   │   │   └── auth.service.ts
│   │   ├── board
│   │   │   ├── board.module.ts
│   │   │   ├── board.resolver.ts
│   │   │   ├── board.service.ts
│   │   │   ├── dto
│   │   │   │   ├── createBoard.input.ts
│   │   │   │   └── updateBoard.input.ts
│   │   │   └── entities
│   │   │       └── board.entity.ts
│   │   ├── boardImage
│   │   │   └── entities
│   │   │       └── boardImage.entity.ts
│   │   ├── captcha
│   │   │   ├── captcha.controller.ts
│   │   │   └── captcha.module.ts
│   │   ├── chatHistory
│   │   │   ├── chatHistory.module.ts
│   │   │   ├── chatHistory.resolver.ts
│   │   │   ├── chatHistory.service.ts
│   │   │   └── entities
│   │   │       └── chatHistory.entity.ts
│   │   ├── dibs
│   │   │   ├── dibs.module.ts
│   │   │   ├── dibs.resolver.ts
│   │   │   ├── dibs.service.ts
│   │   │   └── entity
│   │   │       └── dibs.entity.ts
│   │   ├── donation
│   │   │   ├── donation.module.ts
│   │   │   ├── donation.resolver.ts
│   │   │   ├── donation.service.ts
│   │   │   └── entities
│   │   │       └── donation.entity.ts
│   │   ├── enroll
│   │   │   ├── enroll.module.ts
│   │   │   ├── enroll.resolver.ts
│   │   │   ├── enroll.service.ts
│   │   │   └── entities
│   │   │       └── enroll.entity.ts
│   │   ├── iamport
│   │   │   └── iamport.service.ts
│   │   ├── image
│   │   │   ├── image.module.ts
│   │   │   ├── image.resolver.ts
│   │   │   └── image.service.ts
│   │   ├── phoneToken
│   │   │   └── entities
│   │   │       └── phoneToken.entity.ts
│   │   ├── product
│   │   │   ├── dto
│   │   │   │   ├── createProduct.input.ts
│   │   │   │   └── updateProduct.input.ts
│   │   │   ├── entities
│   │   │   │   └── product.entity.ts
│   │   │   ├── product.module.ts
│   │   │   ├── product.resolver.ts
│   │   │   └── product.service.ts
│   │   ├── productImage
│   │   │   ├── dto
│   │   │   │   ├── createProductImage.input.ts
│   │   │   │   └── updateProductImage.input.ts
│   │   │   ├── entities
│   │   │   │   └── productImage.entity.ts
│   │   │   ├── productImage.module.ts
│   │   │   ├── productImage.resolver.ts
│   │   │   └── productImage.service.ts
│   │   ├── purchase
│   │   │   ├── dto
│   │   │   │   └── createPurchase.input.ts
│   │   │   ├── entities
│   │   │   │   └── purchase.entity.ts
│   │   │   ├── purchase.module.ts
│   │   │   ├── purchase.resolver.ts
│   │   │   └── purchase.service.ts
│   │   ├── user
│   │   │   ├── dto
│   │   │   │   ├── createUser.input.ts
│   │   │   │   └── updateUser.input.ts
│   │   │   ├── entities
│   │   │   │   └── user.entity.ts
│   │   │   ├── user.module.ts
│   │   │   ├── user.resolver.ts
│   │   │   └── user.service.ts
│   │   └── wallpaper
│   │       ├── entities
│   │       │   └── wallpaper.entity.ts
│   │       ├── wallpaper.module.ts
│   │       ├── wallpaper.resolver.ts
│   │       └── wallpaper.service.ts
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   ├── commons
│   │   ├── auth
│   │   │   ├── gql-auth.guard.ts
│   │   │   ├── gql-user.param.ts
│   │   │   ├── jwt-access.strategy.ts
│   │   │   ├── jwt-refresh.strategy.ts
│   │   │   ├── jwt-social-google.strategy.ts
│   │   │   ├── jwt-social-kakao.strategy.ts
│   │   │   └── jwt-social-naver.strategy.ts
│   │   ├── filter
│   │   │   └── http-exception.filter.ts
│   │   ├── graphql
│   │   │   └── schema.gql
│   │   └── libraries
│   │       ├── email.ts
│   │       └── phone.ts
│   ├── gateways
│   │   └── chat
│   │       ├── chat.gateway.ts
│   │       ├── chat.module.ts
│   │       ├── chat.service.ts
│   │       └── list.txt
│   └── main.ts
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

주요 기능

프로젝트 설치 방법, 실행 방법

git clone https://github.com/code-bootcamp/f6b2-team3-server.git
yarn install

.env

문자전송 SMS_APP_KEY, SMS_X_SECRET_KEY, SMS_SENDER
메일전송 MAIL_APP_KEY,MAIL_X_SECRET_KEY,MAIL_SENDER
JWT 엑세스,리프레시키 JWT_ACCESS_KEY,JWT_REFRESH_KEY

소셜로그인
Google GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_CALLBACK_URL Naver NAVER_CLIENT_ID, NAVER_CLIENT_SECRET, NAVER_CALLBACK_URL
Kakao KAKAO_CLIENT_ID, KAKAO_CLIENT_SECRET, KAKAO_CALLBACK_URL
Cors SOCIAL_REDIRECT_URL,FRONTEND_URLS, BACKEND_DOMAIN

아임포트
IMPORT_API_KEY, IMPORT_API_SECRET

GCP STORAGE_BUCKET, STORAGE_KEY_FILENAME, STORAGE_PROJECT_ID
GCP DB DATABASE_HOST,DATABASE
Redis REDIS_URL,REDIS_PUBLIC_URL, REDIS_PRIVATE_URL
Elasticsearch ELASTICSEARCH_URL

소셜로그인 가입시 디폴트 정보
DEFAULT_NAME, DEFAULT_EMAIL, DEFAULT_PHONE, DEFAULT_PASSWORD

voluntier-server's People

Contributors

hohorang avatar kim-a-reum avatar tutuh2 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

voluntier-server's Issues

Update createProduct API

createProduct 입력값에 image URL 배열을 직접 productImage생성하지 않아도 생성가능하도록 변경하기

Update user, auth 관련 API

Issue

auth

  • /login/google REST API
  • /login/naver REST API
  • /login/kakao REST API
  • login GraphQL API
  • logout GraphQL API
  • restoreAccessToken GraphQL API

user

  • fetchLoginUser GraphQL API
  • createUser GraphQL API
  • updateUser GraphQL API
  • deleteUser GraphQL API

commons/auth

  • jwt-access.strategy.ts
  • jwt-refresh.strategy.ts
  • jwt-social-google.strategy.ts
  • jwt-social-kakao.strategy.ts
  • jwt-social-naver.strategy.ts

etc

  • API 최초 작성

Create Additional Functions

Issue

  • fetchBoardsOfUser 구현하기
  • updateUserImage API 최초 구현(유저 프로필 이미지 변경)

Update product

fetch를 제외한 product API admin이 아닐경우 불가하도록 변경

Update purchase API

이미 구매한 상품이 삭제될 경우 query가 정상작동하지 않는 현상 수정

Update donation API

donation 관련 API( iamport결제, donation 생성, 포인트 지급 api) 기능 구현

Update Board API

Issue

  • Logstash 쿼리 수정(게시글 조회 시 유저명도 조회하도록)
  • 모집인원, 이미지 url 필수입력에서 제외
  • 게시글 본문 varchar -> text로 변경
  • 불필요한 로그 삭제 및 한국시간에 맞게 출력하도록 수정

etc

Update 쿠버네티스 배포 테스트용

Issue

  • env 파일이 필요한 기능들 테스트를 위해 쿠버네티스에 환경 변수 적용해서 배포하기

etc

  • env.prod 파일에 있는 환경변수들 적용

Update Chat gateway

기존 서버와 동일한 포트에서 채팅 게이트웨이 연결되도록 설정

Create Board & Enroll API

Issue

  • auth Refresh Token 만료시간 3시간, Access Token 만료시간 1시간 수정
  • createBoard.input.ts 오타 수정
  • board.entity.ts boardImage 가져오기 위해 OneToMany 관계 설정
  • board(봉사 게시글) CRUD API
  • enroll(봉사 참여) CRUD API
  • boardImage(봉사 게시글 이미지) Entity

etc

  • API 최초 구현
  • board에 Elastic Search와 Redis는 아직 미적용

Update All APIs

Issue

  • 전체적인 코드 리팩토링
  • if문 중첩 부분 수정
  • API, 함수에 주석 작성

Create 인증번호 전송 및 인증 API

Issue

  • checkAuthToken API 최초 작성
  • sendAuthToken API 최초 작성
  • phoneToken Entity 추가
  • createUser API 호출 시 인증된 번호인지 체크하는 로직 추가

etc

  • API 및 Entity 추가, 일부 API 수정

Create Kubenetes 설정 및 Logout API

Issue

  • Logout API 구현
  • 민감 정보들 env 파일 참조하도록 수정(Kubernetes에 환경변수로 등록)

etc

  • env.prod 파일에 있는 환경변수들 적용

Update CORS 설정 및 env 정보

Issue

  • 여러 origin에서 접속할 수 있도록 수정
  • 각종 로그인 민감정보 env로 수정

etc

  • auth.controller.ts
  • auth.resolver.ts
  • auth.service.ts
  • jwt-access.strategy.ts
  • jwt-refresh.strategy.ts
  • jwt-social-google.strategy.ts
  • jwt-social-kakao.strategy.ts
  • jwt-social-naver.strategy.ts
  • app.module.ts
  • main.ts

Update User API

Issue

  • user의 비밀번호 초기화 할 수 있게 메일링 발송 API 구현
  • 정기 메일링(cron 추가)
  • 채팅 gateway 수정

Update Board, Enroll API

Issue

  • Board: 검색어 없으면 MySQL 조회, 있으면 Redis, ES 조회하도록 수정
  • Enroll: 봉사 완료하면 유저의 봉사시간 업데이트 하도록 수정

Update Board API

Issue

  • fetchBoards 에서 page 필수 입력 제외
  • fetchBoardsCount API 구현(fetchBoards와 같이 ES에서 조회하도록)
  • fetchEnrollsByBoardId 에서 user 정보도 받아올 수 있게 수정
  • Logstash가 삭제되거나 수정된 게시물도 ES에 덮어쓰도록 수정
  • Board Entity에 UpdateDateColumn 추가
  • fetchBoards, fetchBoardsCount API에서 ES에서 삭제된 데이터는 조회하지 않도록 수정

Create 담당 폴더 구성

Issue

  • auth 초기 폴더 구성
  • board 초기 폴더 구성
  • user 초기 폴더 구성
  • enroll 초기 폴더 구성

etc

  • entity, module, resolver, controller, service 생성

Create ELK Stack & Board Search

Issue

  • ELK Stack 로컬 및 GCP에 설정
  • fetchBoards API에서 Elastic Search 이용한 검색 구현
  • Logstash 이용하여 MySQL -> Elastic Search 데이터 적재하도록 설정
  • GCP에 VM 인스턴스로 Elastic Search 띄울 수 있게 설정

etc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.