Skip to content

code-bootcamp/lookatme-server

Repository files navigation

Look AT Me

2030을 위한 심리상담소!
Look At Me

최근, 2030들은 인플레이션으로 인한 많은 것에 지쳐있고 이로 인해 
다양한 심리적 문제가 발생하고 있습니다. 

하지만, 아직도 우리나라에서 정신과나 심리상담센터의 진입장벽은 상당히 높은 편입니다.

이러한 점을 개선하기 위해 온라인으로 본인의 고민을 털어놓고,
같은 고민으로 힘들어하는 사람들과 소통할 수 있는 커뮤니티를 제공해주고,
전문가들과 온라인 채팅을 통해 부담없이 상담을 받을 수 있는 플랫폼을 기획했습니다. 

인스타그램, 페이스북 등 SNS에서는 본인의 잘난 부분만 자랑하는 사람들이 대부분인 반면, 
저희가 기획, 개발한 플랫폼에서는 본인의 가장 약한 부분, 가장 고민되는 부분 등을 거리낌없이 공유함으로써
모든사람들이 함께 고민을 나눈다는 점에서 

“나를 봐!” 라는 의미의 “Look At Me”란 이름으로 기획하였습니다.

기술 스택

  • TypeScript
  • Node.js
  • Nest.js
  • MySQL
  • GCP
  • TypeORM
  • Graphql
  • WebSocket
  • Cron-Scheduler
  • Kubernetes
  • Redis
  • Git
  • Flow Chart

    Pipeline

    ERD

    API Docs

    폴더 구조

    f8b4_team06_server
    ├── .vscode
    │   └── settings.json
    ├── src
    │   ├── apis
    │   │   ├── admin
    │   │   │   ├── dto
    │   │   │   │   └── createAdmin.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── admin.entity.ts
    │   │   │   ├── admins.module.ts
    │   │   │   ├── admins.resolver.ts
    │   │   │   └── admins.service.ts
    │   │   ├── auth
    │   │   │   ├── auths.controller.ts
    │   │   │   ├── auths.module.ts
    │   │   │   ├── auths.resolver.ts
    │   │   │   └── auths.service.ts
    │   │   ├── batch
    │   │   │   ├── batches.resolver.ts
    │   │   │   ├── batches.module.ts
    │   │   │   └── batches.service.ts
    │   │   ├── category
    │   │   │   ├── entites
    │   │   │   │   └── category.entity.ts
    │   │   │   └── categories.service.ts
    │   │   ├── chat
    │   │   │   ├── dto
    │   │   │   │   └── chatList.output.ts
    │   │   │   ├── entities
    │   │   │   │   ├── chatMessage.entity.ts
    │   │   │   │   └── specialistChatMessage.entity.ts
    │   │   │   ├── chats.gateway.ts
    │   │   │   ├── chats.module.ts
    │   │   │   ├── chats.resolver.ts
    │   │   │   └── chats.service.ts
    │   │   ├── comment
    │   │   │   ├── dto
    │   │   │   │   ├── createComment.input.ts
    │   │   │   │   └── updateComment.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── comment.entity.ts
    │   │   │   ├── comments.module.ts
    │   │   │   ├── comments.resolver.ts
    │   │   │   └── comments.service.ts
    │   │   ├── file
    │   │   │   ├── files.module.ts
    │   │   │   ├── files.resolver.ts
    │   │   │   └── files.service.ts
    │   │   ├── iamport
    │   │   │   ├── iamports.module.ts
    │   │   │   └── iamports.service.ts
    │   │   ├── payment
    │   │   │   ├── entities
    │   │   │   │   └── payment.entity.ts
    │   │   │   ├── payments.module.ts
    │   │   │   ├── payments.resolver.ts
    │   │   │   └── payments.service.ts
    │   │   ├── quote
    │   │   │   ├── dto
    │   │   │   │   ├── createQuote.input.ts
    │   │   │   │   └── updateQuote.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── quote.entity.ts
    │   │   │   ├── defaultQuoteList.ts
    │   │   │   ├── quotes.module.ts
    │   │   │   ├── quotes.resolver.ts
    │   │   │   └── quotes.service.ts
    │   │   ├── specialist
    │   │   │   ├── dto
    │   │   │   │   ├── createSpecialist.input.ts
    │   │   │   │   └── updateSpecialist.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── specialist.entity.ts
    │   │   │   ├── specialists.module.ts
    │   │   │   ├── specialists.resolver.ts
    │   │   │   └── specialists.service.ts
    │   │   ├── specialistComment
    │   │   │   ├── dto
    │   │   │   │   ├── createSpecialistComment.input.ts
    │   │   │   │   └── updateSpecialistComment.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── specialistComment.entity.ts
    │   │   │   ├── specialistComments.module.ts
    │   │   │   ├── specialistComments.resolver.ts
    │   │   │   └── specialistComments.service.ts
    │   │   ├── specialistReview
    │   │   │   ├── dto
    │   │   │   │   └── createSpecialistReveiw.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── specialistReveiw.entity.ts
    │   │   │   ├── specialistReveiws.module.ts
    │   │   │   ├── specialistReveiws.resolver.ts
    │   │   │   └── specialistReveiws.service.ts
    │   │   ├── story
    │   │   │   ├── dto
    │   │   │   │   ├── createStory.input.ts
    │   │   │   │   └── updateStory.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── story.entity.ts
    │   │   │   ├── stories.module.ts
    │   │   │   ├── stories.resolver.ts
    │   │   │   └── stories.service.ts
    │   │   ├── storyImage
    │   │   │   ├── entities
    │   │   │   │   └── storyImage.entity.ts
    │   │   ├── ticket
    │   │   │   ├── entities
    │   │   │   │   └── ticket.entity.ts
    │   │   │   ├── tickets.module.ts
    │   │   │   ├── tickets.resolver.ts
    │   │   │   └── tickets.service.ts
    │   │   ├── underComment
    │   │   │   ├── dto
    │   │   │   │   ├── createunderComment.input.ts
    │   │   │   │   └── updateunderComment.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── UnderComment.entity.ts
    │   │   │   ├── underComments.module.ts
    │   │   │   ├── underComments.resolver.ts
    │   │   │   └── underComments.service.ts
    │   │   ├── underSpecialistComment
    │   │   │   ├── dto
    │   │   │   │   ├── createUnderSpecialistComment.input.ts
    │   │   │   │   └── updateUnderSpecialistComment.input.ts
    │   │   │   ├── entities
    │   │   │   │   └── underSpecialistComment.entity.ts
    │   │   │   ├── underSpecialistComments.module.ts
    │   │   │   ├── underSpecialistComments.resolver.ts
    │   │   │   └── underSpecialistComments.service.ts
    │   │   └── user
    │   │       ├── dto
    │   │       │   ├── createUser.input.ts
    │   │       │   └── updateUser.input.ts
    │   │       ├── entities
    │   │       │   └── user.entity.ts
    │   │       ├── user.module.ts
    │   │       ├── user.resolver.ts
    │   │       └── user.service.ts
    │   ├── commons
    │   │   ├── auth
    │   │   │   ├── gql-auth.guard.ts
    │   │   │   ├── jwt-access.strategy.ts
    │   │   │   ├── jwt-admin-access.strategy.ts
    │   │   │   ├── jwt-refresh.strategy.ts
    │   │   │   ├── jwt-social-google.strategy.ts
    │   │   │   ├── jwt-social-kakao.strategy.ts
    │   │   │   ├── jwt-social-naver.strategy.ts
    │   │   │   └── jwt-specialist-access.strategy.ts
    │   │   ├── filter
    │   │   │   └── http-exception.filter.ts
    │   │   └── graphql
    │   │   │    └── schema.gql
    │   │   └── libraries
    │   │   │   └── utills.ts
    │   │   └── type
    │   │   │   ├── context.ts
    │   │   │   └── enum.ts
    │   ├── app.controller.ts
    │   ├── app.module.ts
    │   └── main.ts
    ├── test
    ├── .dockerignore
    ├── .env
    ├── .env.docker
    ├── .env.prod
    ├── .eslintrc.js
    ├── .gitignore
    ├── .prettierrc
    ├── cloudbuild.yaml
    ├── docker-compose.dev.yaml
    ├── docker-compose.prod.yaml
    ├── docker-compose.yaml
    ├── Dockerfile
    ├── Dockerfile.prod
    ├── nest-cli.json
    ├── package.json
    ├── README.md
    ├── tsconfig.build.json
    ├── tsconfig.json
    └── yarn.lock
    

    . env 설정

  • DATABASE_TYPE
  • DATABASE_HOST
  • DATABASE_PORT
  • DATABASE_USERNAME
  • DATABASE_PASSWORD
  • DATABASE_DATABASE
  • GOOGLE_CLIENT_ID
  • GOOGLE_CLIENT_SECRET
  • NAVER_CLIENT_ID
  • NAVER_CLIENT_SECRET
  • KAKAO_CLIENT_ID
  • KAKAO_CLIENT_SECRET
  • IMP_CLIENT_KEY
  • IMP_CLIENT_SECRET
  • PROJECT_ID
  • KEY_FILENAME
  • BUCKET_NAME
  • HASH_SALT
  • JWT_ACCESS_SECRET
  • JWT_REFRESH_SECRET
  • SMS_KEY
  • SMS_SECRET
  • SMS_SENDER
  • EMAIL_USER
  • EMAIL_PASS
  • EMAIL_SENDER
  • CLIENT_DOMAIN
  • LOCALHOST_DOMAIN
  • SERVER_DOMAIN
  • REDIS_IP
  • BackEnd 팀원 역할

    송재의

    GitHub Gmail
  • Git 관리
  • Backend CI/CD 배포
  • ERD 설계 및 API DOCS 작업
  • 채팅 기능 구현
  • Task Scheduling을 활용한 명언 주기적 자동 업데이트 기능 구현
  • 로그인 기능 구현
  • 회원가입 기능 구현
  • 결제 기능 구현
  • 조향래

    GitHub Gmail
  • ERD 설계 및 API DOCS 작업
  • 파이프라인 작성
  • 이미지 파일 업로드 구현
  • CRUD API 구현