Skip to content

보호소 예비 보호자를 위한 커뮤니티 및 봉사관련 서비스

Notifications You must be signed in to change notification settings

code-bootcamp/Voluntier-server

Repository files navigation

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