Skip to content

Latest commit

 

History

330 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[Logo] Motimates Back-end


🧑‍🤝‍🧑 Team Crew - BE

문영민 문효진 최태영
이미지 설명 이미지 설명 이미지 설명
ㆍ개발/배포 환경 분리 설정
ㆍSwagger 파일 분리 적용
ㆍ구글 로그인
ㆍJWT 미들웨어
ㆍ게시글 API
ㆍ카카오 로그인
ㆍ유저, 미션, 모임 API
ㆍ네이버 로그인

📂 다운로드

# 백엔드 소스 다운로드
$ git clone https://github.com/SesacProjectTeamA-2/pj-back.git

+ 화면에서 실행하고 싶은 경우, 진행

# 프론트엔드 소스 다운로드
$ git clone https://github.com/SesacProjectTeamA-2/pj-front.git

🛠️ 사용한 기술

Node
Express
Sequelize
MySQL
Swagger


📚 주요 라이브러리

  • cors
  • cross-env
  • express-basic-auth
  • jsonwebtoken
  • node-cron

🚀 ERD

image


*반정규화

image

테이블명 관계 및 추가 정보
group - mission - 모임당 하나의 디데이 및 여러 미션을 설정하고 있어 1대다 관계.
- 미션에 대한 디데이가 지났는지 여부에 대한 데이터 저장을 위한 컬럼(isExpired) 설정.
groupBoard - groupUser - 게시물을 작성시 해당 미션(mSeq)은 ‘미션 완료’로 간주하고(‘y’)
- 모임참여유저의 점수가 업데이트.
- 난이도 정보가 필요하여 mission Table 을 JOIN
group - groupUser - 모임의 총 점수와 모임 참여 유저의 현재점수를 사용하여 달성률 및 랭킹을 추출.
- 달성률/랭킹을 위한 table을 모델링하게 된다면, 구조가 복잡해지고 데이터저장을 위한 공간이 필요하므로, 반정규화 채택.
groupBoard - mission - 미션 완료 여부에 대한 컬럼을 groupBoard에 포함. 관계 테이블을 정의하면 한 번의 JOIN을 더 거치게 되어 반정규화

⚙️ 개발 환경 설정

1. .env 파일 설정

  • config 폴더 밑에 .env파일을 생성
# .env 파일 생성
$ cd pj-back
$ touch .env

2. Swagger 설정

JWT를 사용해서 Bearer 토큰값이 필요한 경우, 설정해주는 부분

// config/swagger.js
components: {
  securitySchemes: {
    bearerAuth: {
      type: 'http',
      scheme: 'bearer',
      bearerFormat: 'JWT',
    },
  },
},

Swagger 로그인 설정(아이디, 비밀번호 입력)

app.use(
  '/api-docs', // YOUR_URL/api-docs : Swagger 호출
  eba({ // const eba = require('express-basic-auth');
    // swagger 로그인 설정
    challenge: true,
    users: { YOUR_SWAGGER_ID: 'YOUR_SWAGGER_PW' }, // ID: PW
  }),
  swaggerUi.serve,
  swaggerUi.setup(specs)
);
전송 정보 예시 결과값 예시
image image

3. 기타 API Key 값 설정

1) 소셜 로그인

  • 구글 로그인
  • 카카오 로그인
  • 네이버 로그인

2) AWS S3


🏃‍♂️ 서버 구동

# git clone 이후에 실행
$ cd pj-back

# 개발 서버 (localhost:YOUR_PORT)
$ npm start

# 배포 서버 (YOUR_DOMAIN:YOUR_PORT)
$ npm run start:prod

📂 프로젝트 폴더 구조:

├── app.js
├── config
├── controller
├── middlewares
├── models
├── modules
   ├── swagger
       ├── parameter
           ├─ path
           ├─ query
       ├── requestBody
       ├── response
└── routes

About

[포트폴리오] 공동 목표를 가진 팀을 형성하는 커뮤니티 웹사이트 ‘Motimates’

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages