Skip to content

Sopkathon-31th-3/server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘ŸπŸƒ SERVER πŸ‘ŸπŸƒ

31th IN SOPT 솝컀톀 3μ‘°
ν”„λ‘œμ νŠΈ κΈ°κ°„ : 2022.11.19 ~ 2022.11.20

πŸ”” μ„œλΉ„μŠ€λͺ… : μ†Œμ›μ„ 말(만)해봐

πŸ”” μ„œλΉ„μŠ€ ν•œμ€„μ†Œκ°œ : λ¬Όκ°€ μƒμŠΉμ—λ„ μœ„μ‹œλ¦¬μŠ€νŠΈ 포기 λͺ»ν•˜λŠ” 당신을 μœ„ν•œ ν™˜μœ¨ 계산기


πŸƒ Server πŸƒ

κΉ€λ―Όμš± μ†Œμ˜ˆμ›
🐸 coreminw 🐸 Soyewon

πŸƒ Used πŸƒ


TypeScript PostgreSQL Prisma AWS
Prettier ESLint


πŸƒ Coding Convention πŸƒ


넀이밍

DB

  • DB 이름은 UpperCamelCaseλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

ν•¨μˆ˜, λ³€μˆ˜, νƒ€μž…

  • ν•¨μˆ˜μ™€ λ³€μˆ˜μ—λŠ” lowerCamelCaseλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν•¨μˆ˜λͺ…은 λ™μ‚¬λ‘œ μ‹œμž‘ν•©λ‹ˆλ‹€.
  • νƒ€μž…λͺ…은 νŒŒμŠ€μΉΌμΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
    • interface이름에 Iλ₯Ό 뢙이지 μ•ŠμŠ΅λ‹ˆλ‹€.
  • κΈ°λ³Έ 클래슀 νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό 생성할 λ•ŒλŠ” μ•½μ–΄ κ·œμΉ™μ— 따라 λ„€μ΄λ°ν•©λ‹ˆλ‹€.

λ³€μˆ˜ 넀이밍

  • 사진 β†’ photo
  • μœ μ € β†’ user
  • 배열을 담은 λ³€μˆ˜β†’ ~s(λ³΅μˆ˜ν˜•)
  • μƒνƒœ β†’ status


βœ‰οΈ Branch Strategy

[CHORE] μ½”λ“œ μˆ˜μ •, λ‚΄λΆ€ 파일 μˆ˜μ • 
[FEAT] μƒˆλ‘œμš΄ κΈ°λŠ₯ κ΅¬ν˜„ 
[ADD] Feat μ΄μ™Έμ˜ λΆ€μˆ˜μ μΈ μ½”λ“œ μΆ”κ°€, 라이브러리 μΆ”κ°€, μƒˆλ‘œμš΄ 파일 생성 μ‹œ, 에셋 μΆ”κ°€
[HOTFIX] issueλ‚˜, QAμ—μ„œ κΈ‰ν•œ 버그 μˆ˜μ •μ— μ‚¬μš©
[FIX] 버그, 였λ₯˜ ν•΄κ²°
[REMOVE] μ“Έλͺ¨μ—†λŠ” μ½”λ“œ μ‚­μ œ 
[DOCS] READMEλ‚˜ WIKI λ“±μ˜ λ¬Έμ„œ κ°œμ •
[MOVE] ν”„λ‘œμ νŠΈ λ‚΄ νŒŒμΌμ΄λ‚˜ μ½”λ“œμ˜ 이동 
[RENAME] 파일 이름, λ³€μˆ˜λͺ…, ν•¨μˆ˜λͺ… 변경이 μžˆμ„ λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. 
[REFACTOR] μ „λ©΄ μˆ˜μ •μ΄ μžˆμ„ λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€ 

πŸ—‚Β ν”„λ‘œμ νŠΈ 폴더링

πŸ“¦ controllers               
 ┣ πŸ“œ index.ts
 β”— πŸ“œ Controller.ts

πŸ“¦ interfaces                
 β”— πŸ“‚ common
 ┃ ┣ πŸ“œ Dto.ts
 β”— πŸ“‚ hihi
   ┣ πŸ“œ BoardInfo.ts

πŸ“¦ constants                  
 ┣ πŸ“œ index.ts
 ┣ πŸ“œ responseMessage.ts
 β”— πŸ“œ reponse.ts
 β”— πŸ“œ statusCode.ts

πŸ“¦ router                   
 ┣ πŸ“œ router.ts
 β”— πŸ“œ index.ts

πŸ“¦ services                  
 ┣ πŸ“œ service.ts
 β”— πŸ“œ index.ts

✨ Github Management


✨ Gitflow ✨
1. Issueλ₯Ό μƒμ„±ν•œλ‹€.
2. κΉƒ μ»¨λ²€μ…˜μ— 맞게 Branchλ₯Ό μƒμ„±ν•œλ‹€.
3. Add - Commit - Push - Pull Request 의 과정을 κ±°μΉœλ‹€.
4. Pull Requestκ°€ μž‘μ„±λ˜λ©΄ μž‘μ„±μž μ΄μ™Έμ˜ λ‹€λ₯Έ νŒ€μ›μ΄ Code Reviewλ₯Ό ν•œλ‹€.
5. Code Reviewκ°€ μ™„λ£Œλ˜λ©΄ Pull Request μž‘μ„±μžκ°€ develop Branch둜 merge ν•œλ‹€.
6. merge된 BranchλŠ” μ‚­μ œν•œλ‹€.
7. μ’…λ£Œλœ Issue와 Pull Request의 Labelκ³Ό Projectλ₯Ό κ΄€λ¦¬ν•œλ‹€.

🌴 브랜치


πŸ“Œ 브랜치 λ‹¨μœ„

  • 브랜치 λ‹¨μœ„ = 이슈 λ‹¨μœ„ = PRλ‹¨μœ„

πŸ“Œ 브랜치λͺ…

  • λΈŒλžœμΉ˜λŠ” λ·° λ‹¨μœ„λ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
  • 브랜치 κ·œμΉ™ β†’ feature/#이슈번호-νƒ­-κΈ°λŠ₯κ°„λž΅μ„€λͺ…
  • ex) feature/#1-postLike
  • 탭이름 - yewon, minwook
  • 곡톡적인 것 μž‘μ—… - Global
    • feature/chore/fix/network

πŸ’‘ 이슈, PR κ·œμΉ™


πŸ“Œ Issueλͺ… = PRλͺ…

  • [FEAT] - κΈ°λŠ₯ κ΅¬ν˜„
  • [FIX] - 버그 μˆ˜μ •
  • [REFACTOR] - μ½”λ“œ λ¦¬νŒ©ν† λ§(결과물은 κ°™μ§€λ§Œ μ½”λ“œμ˜ ν–₯상)
  • [CHORE] - μˆ˜μ •
  • [ADD] - μ„ΈνŒ… 및 라이브러리 μΆ”κ°€

πŸƒ APIs πŸƒ

EndPoint detail developer done
RESULT κ²°κ³Ό νŽ˜μ΄μ§€ 정보 민욱
WISH μ†Œμ› 정보 λ°›κΈ° μ˜ˆμ›
FOOD μ’‹μ•„ν•˜λŠ” μŒμ‹ 정보 λ°›κΈ° 민욱


API λͺ…μ„Έμ„œ

API λͺ…μ„Έμ„œ



package.json

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "nodemon",
    "build": "tsc && node dist",
    "lint": "yarn run lint-prettier && yarn run lint-eslint",
    "lint-eslint": "eslint --ignore-path .gitignore src/**/*ts --fix",
    "lint-prettier": "prettier --write \"src/**/*.(ts|tsx)\""
  },
  "lint-staged": {
    "src/**/*.(ts|tsx)": [
      "yarn lint"
    ]
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/bcryptjs": "^2.4.2",
    "@types/express": "^4.17.13",
    "@types/jsonwebtoken": "^8.5.8",
    "@types/mongoose": "^5.11.97",
    "@types/node": "^17.0.25",
    "eslint": "^8.16.0",
    "nodemon": "^2.0.15",
    "ts-node": "^10.7.0",
    "typescript": "^4.6.3"
  },
  "dependencies": {
    "@prisma/client": "^4.6.1",
    "@typescript-eslint/eslint-plugin": "^5.9.0",
    "@typescript-eslint/parser": "^5.9.0",
    "bcryptjs": "^2.4.3",
    "dayjs": "^1.11.6",
    "dotenv": "^16.0.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-import": "^2.25.4",
    "eslint-plugin-prettier": "^4.0.0",
    "eslint-plugin-simple-import-sort": "^7.0.0",
    "express": "^4.17.3",
    "express-validator": "^6.14.0",
    "jsonwebtoken": "^8.5.1",
    "lint-staged": "^12.1.5",
    "mongoose": "^6.3.1",
    "prettier": "^2.5.1",
    "prisma": "^4.6.1"
  }
}


schema.prisma

{
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model food {
  id       Int    @id(map: "food_pk") @unique(map: "food_id_uindex")
  foodName String @db.VarChar(20)
  price    Int
}

model wish {
  id       Int      @id(map: "wish_pk") @unique @default(autoincrement())
  wishItem String   @db.VarChar(30)
  price    Int
  date     DateTime @db.Timestamp(6)
}

}


ERD

KakaoTalk_Photo_2022-11-20-06-52-52



server architecture

KakaoTalk_Photo_2022-11-20-06-59-44

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published