Skip to content

Team-MoMo/MoMo-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MOMO-SERVER

๐ŸŒŠ ์ฑ… ์†์˜ ๋ฌธ์žฅ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ๋ณด๋‹ค ๊นŠ์ด ์žˆ๋Š” ๊ฐ์ • ๊ธฐ๋ก์„ ๋„์™€์ฃผ๋Š” ์ผ๊ธฐ ์•ฑ ์„œ๋น„์Šค 'MOMO'


  • SOPT 27th APPJAM
  • 2020.12.28 ~ 2021.01.16

๐Ÿ“œํ”„๋กœ์ ํŠธ ์„ค๋ช…


MOMO๋Š” ์ฑ… ์†์˜ ๋ฌธ์žฅ๊ณผ ์ผ๊ธฐ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ '๋ณด๋‹ค ์‰ฌ์šด ๊ฐ์ • ๊ธฐ๋ก'์„ ๋„์™€์ฃผ๋Š” ์ผ๊ธฐ ์•ฑ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์˜ ๊ฐ์ •์„ ์„ ํƒํ•˜๋ฉด, โœจ๋งค์ผ 3๊ฐœ์”ฉ ์ƒˆ๋กœ์šด ๋ฌธ์žฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
๋งˆ์Œ์˜ ๋“œ๋Š” ๋ฌธ์žฅ์„ ์„ ํƒํ•˜๊ณ  โœ์˜ค๋Š˜์˜ ๊ฐ์ •์„ ๊ธฐ๋กํ•ด๋ณด์„ธ์š”.
๋ฌธ์žฅ์ด ๊ฐ์ˆ˜์„ฑ์„ ์ž๊ทนํ•ด์„œ ํ‰์†Œ๋ณด๋‹ค ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ฐ์ •์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.
๐Ÿณ ๊นŠ์–ด์ง„ ๊ฐ์ •์„ ๋ฐ”๋‹ค์˜ ๊นŠ์ด๋กœ ํ‘œํ˜„ํ•ด์„œ ๋‚˜๋งŒ์˜ ๋ฐ”๋‹ค๋ฅผ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”.


๐ŸŽข Workflow

์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋ณด๋ ค๋ฉด ๐Ÿ‘‡ ์•„๋ž˜๋ฅผ ํด๋ฆญํ•˜์„ธ์š”

๐Ÿ”— MOMO workflow



๐Ÿ“Œํ•ต์‹ฌ ๊ธฐ๋Šฅ

โœ”๋ฌธ์žฅ ์ถ”์ฒœ

"์˜ค๋Š˜์˜ ๊ฐ์ •์€ ์–ด๋• ๋‚˜์š”?"
"๋งˆ์Œ์— ํŒŒ๋™์ด ์ด๋Š” ๋ฌธ์žฅ์„ ๋งŒ๋‚˜๋ณด์„ธ์š”."
โœจ์œ ์ €๋ณ„๋กœ ๋งค์ผ ๋งค์ผ ์ƒ‰๋‹ค๋ฅธ 3๊ฐœ์˜ ๋ฌธ์žฅ์„ ๊ฐ์ •๋ณ„๋กœ ์ œ๊ณต

โœ”์ผ๊ธฐ ์ž‘์„ฑ

"๊ฐ์ •์ด ์–ผ๋งˆ๋‚˜ ๊นŠ์€๊ฐ€์š”?
๋‚˜๋งŒ์˜ ๋ฐ”๋‹ค์— ๊ธฐ๋กํ•ด๋ณด์„ธ์š”"
โœ์ž‘๊ฐ€์˜ ๊ฐ์ •ํ‘œํ˜„์„ ๋นŒ๋ ค ๊นŠ์ด๊ฐ€ ๋‹ด๊ธด ์ผ๊ธฐ๋ฅผ ๊ธฐ๋ก

โœ”์ผ๊ธฐ ์กฐํšŒ

'2M,30M,700M ๊ทธ๋ฆฌ๊ณ  1005M'
"ํ•œ๋‹ฌ๊ฐ„์˜ ๊ฐ์ •์„ ๋ฐ”๋‹ค ๊นŠ์ˆ™ํžˆ ์œ ์˜ํ•˜๋ฉฐ ๋А๊ปด๋ณด์„ธ์š”"
๐Ÿณ ์›”๊ฐ„ ์ผ๊ธฐ ๋ฆฌ์ŠคํŠธ - ๊นŠ์ด๋ณ„ ์กฐํšŒ (์ผ๊ธฐ ๋ฌผ๋ฐฉ์šธ ๋žœ๋ค ๋ฐฐ์น˜)/๋‚ ์งœ๋ณ„/ํ•„ํ„ฐ๋ณ„ ์กฐํšŒ ์ œ๊ณต
์›”๊ฐ„ ์ผ๊ธฐ ํ†ต๊ณ„ - ํ•œ๋‹ฌ๊ฐ„ ๊ฐ์ •์„ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ†ต๊ณ„ ์ œ๊ณต
๊ฐœ๋ณ„ ์ผ๊ธฐ ์กฐํšŒ


๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง Developer & Role

๊ฐ•์˜์šฐ ์„์˜ํ˜„ ๊น€์ฑ„์›
๐ŸšYeongWoooo ๐Ÿ yeonghyeonSeok ๐Ÿกchaeppy
์ผ๊ธฐ ์ž‘์„ฑ, ์กฐํšŒ
์ผ๊ธฐ ํ†ต๊ณ„
๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •
AWS ์ธํ”„๋ผ ํ™˜๊ฒฝ ์„ค์ •
Dockerizing
๋ฌธ์žฅ ์ถ”์ฒœ, ๋“ฑ๋ก
๊ฐ์ • ์กฐํšŒ
ํšŒ์› ๊ด€๋ฆฌ
์•Œ๋ฆผ
Continuous Deploy
๋กœ๊ทธ์ธ
ํšŒ์›๊ฐ€์ž…
๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ
Continuous Integration

๐Ÿ›  ERD


๐Ÿ› Architecture


โš™ Dependencies

  • typescript - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ง€์› ๋ชจ๋“ˆ
  • ts-node - typescript node์„œ๋ฒ„ ๊ตฌ๋™
  • nodemon - ์ฝ”๋“œ ์ˆ˜์ •์‹œ ์ž๋™ ์žฌ์‹œ์ž‘ ๋„๊ตฌ
  • swagger : Api Docs
  • sequelize : ORM
  • cross-env : ํ™˜๊ฒฝ ๋ณ€์ˆ˜
  • jsonwebtoken : Token ์ƒ์„ฑ ๋ฐ ์ธ์ฆ
  • yup : ์ž…๋ ฅ ๊ฒ€์ฆ
  • crypto : ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๋ฐ ์ธ์ฆ
  • dayjs: ๋‚ ์งœ/์‹œ๊ฐ„
  • axios : http ํ†ต์‹ 
  • node-schedule : ์Šค์ผ€์ฅด๋Ÿฌ
  • nodemailer : ์ด๋ฉ”์ผ ๋ฐœ์†ก
  • google-auth-library : ๊ตฌ๊ธ€๋กœ๊ทธ์ธ
  • prettier - ์ฝ”๋“œ ํฌ๋ฉงํ„ฐ
  • eslint - ๋ฌธ๋ฒ• ์ •์ ๋ถ„์„ ๋„๊ตฌ
  • jest : ํ…Œ์ŠคํŠธ
  • supertest - ํ†ตํ•ฉํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ

 "dependencies": {
    "@types/cookie-parser": "^1.4.2",
    "@types/cors": "^2.8.9",
    "@types/http-errors": "^1.8.0",
    "@types/morgan": "^1.9.2",
    "@types/yup": "^0.29.11",
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "cookie-parser": "~1.4.4",
    "cors": "^2.8.5",
    "dayjs": "^1.10.1",
    "debug": "~2.6.9",
    "dotenv": "^8.2.0",
    "errorhandler": "^1.5.1",
    "express": "^4.16.4",
    "google-auth-library": "^6.1.3",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "jsonwebtoken": "^8.5.1",
    "morgan": "~1.9.1",
    "mysql2": "^2.2.5",
    "node-schedule": "^1.3.2",
    "nodemailer": "^6.4.17",
    "rand-token": "^1.0.1",
    "sequelize": "^5.22.0",
    "sequelize-cli": "^6.2.0",
    "swagger-cli": "^4.0.4",
    "swagger-jsdoc": "^6.0.0",
    "swagger-ui-express": "^4.1.6",
    "yamljs": "^0.3.0",
    "yup": "^0.32.8"
  },
  "devDependencies": {
    "@types/errorhandler": "^1.5.0",
    "@types/express": "^4.17.9",
    "@types/jest": "^26.0.20",
    "@types/jsonwebtoken": "^8.5.0",
    "@types/node": "^14.14.16",
    "@types/node-schedule": "^1.3.1",
    "@types/nodemailer": "^6.4.0",
    "@types/supertest": "^2.0.10",
    "@types/swagger-ui-express": "^4.1.2",
    "@types/yamljs": "^0.2.31",
    "@typescript-eslint/eslint-plugin": "^4.11.1",
    "@typescript-eslint/parser": "^4.11.1",
    "cross-env": "^7.0.3",
    "eslint": "^7.16.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-prettier": "^7.1.0",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-prettier": "^3.3.0",
    "jest": "^26.6.3",
    "nodemon": "^2.0.6",
    "prettier": "2.2.1",
    "supertest": "^6.0.1",
    "ts-jest": "^26.4.4",
    "ts-node": "^9.1.1",
    "typescript": "^4.1.3"
  }
  

๐Ÿ™ Rule

1๏ธโƒฃ Code convention

  1. ๋ณ€์ˆ˜๋ช…: camel case

  2. fommating: prettier

  3. lint: eslint

  4. airbnb ํ˜•์‹ ์‚ฌ์šฉ- ์„ธ๋ฏธ์ฝœ๋ก , ํƒญ: 2

  5. async await ์‚ฌ์šฉ

  6. ํŒŒ์ผ๋ช…

    • snake case
    • ํด๋”๋ช…: ๋ณต์ˆ˜ํ˜•
    • controller์˜ ๊ฒฝ์šฐ (๋ผ์šฐํ„ฐ๋ช…)s_controller.js
    • ๋ฉ”์†Œ๋“œ์— ๋ผ์šฐํ„ฐ๋ช… ๋ถ™์ด์ง€ ์•Š๊ธฐ
    • ๊ฐ ํด๋”์— ์ธ๋ฑ์Šค ๋„ฃ๊ธฐ
  7. ๋ณ€์ˆ˜๋ช…

    • camel case

    • ๋ฐฐ์—ด: List

    • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜: ๋™์‚ฌ ํฌํ•จ ๊ธˆ์ง€

    • ํ•จ์ˆ˜: ๋™์‚ฌ๊ฐ€ ์ œ์ผ ์•ž์— ์œ„์น˜

    • ๋ฉ”์†Œ๋“œ: READ(์ฐพ๊ธฐ) CREATE(๋งŒ๋“ค๊ธฐ) UPDATE(์ˆ˜์ •ํ•˜๊ธฐ) DELETE(์‚ญ์ œํ•˜๊ธฐ)

    • ํ†ต์‹  API ์‘๋‹ต์„ ์œ„ํ•œ ๋ณ€์ˆ˜: data๋กœ ํ†ต์ผ

      {
       message: "",
       data: {},
      }
      res.status(200).json(resJsone~~~)

2๏ธโƒฃ Git

  1. ๋ธŒ๋žœ์น˜ ์ค‘์‹ฌ ์šด์˜

    • master - ๋ฐฐํฌ์šฉ
    • develop - ํ…Œ์ŠคํŠธ์šฉ
    • feat/ - ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
    • fix/ - ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ธฐ๋Šฅ ์ˆ˜์ •
  2. ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€

    • Feat: ์ƒˆ๊ธฐ๋Šฅ
    • Refactor: ์›๋ž˜์žˆ๋˜ ์ฝ”๋“œ์˜ ์ˆ˜์ •(๊ธฐ๋Šฅ ๋ณ€๊ฒฝO)
    • Style: ์›๋ž˜์žˆ๋˜ ์ฝ”๋“œ์˜ ์ˆ˜์ •(๊ธฐ๋Šฅ ๋ณ€๊ฒฝX)
    • Docs: ๋ฌธ์„œ๋ณ€๊ฒฝ
    • Fix: ์˜ค๋ฅ˜ ์ˆ˜์ •
    • Etc: ์• ๋งคํ•œ๊ฑฐ
    • ํ•œ๊ธ€๋กœ ์ปค๋ฐ‹
    • ์ปค๋ฐ‹์€ ์ดํ•ดํ•˜๊ธฐ ํŽธํ•œ ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๊ธฐ
  3. ๋จธ์ง€ ๊ทœ์น™

    • Pull request
    • ์ž‘์„ฑ์ž ์™ธ 1๋ช… ์ด์ƒ์ด ๋ฆฌ๋ทฐ(develop),
    • squash and merge ์‚ฌ์šฉ
  4. ๋ธŒ๋žœ์น˜ ์‹œ๋‚˜๋ฆฌ์˜ค

    • ์ƒˆ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
      • master, develop (branch๋”ฐ๊ธฐ) โ†’ feat/users(๊ฐœ๋ฐœ์™„๋ฃŒ) โ†’ develop ๋จธ์ง€(develop ๋ฌธ์ œ ์—†์Œ) โ†’ master๋กœ ๋จธ์ง€
    • ์˜ค๋ฅ˜ ๋ฐœ์ƒ
      • master (branch๋”ฐ๊ธฐ) โ†’ fix/users(์ˆ˜์ •์™„๋ฃŒ) โ†’ develop ๋จธ์ง€(develop ๋ฌธ์ œ ์—†์Œ) โ†’ master๋จธ์ง€

3๏ธโƒฃ Communication

  • Gather Town
  • Slack
  • Notion
  • GitHub - Issue & Projects
  • Zoom

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •