나의 X 소개서 : 내가 해보고 싶었지만 아직 해보지 못했던 활동 ‘X’에 대한 목표를 세우고 달성하게 도와주는 서비스
김소현 | 전선희 |
---|---|
thguss | funnysunny08 |
기능명 | 엔드포인트 | 담당자 |
---|---|---|
x 소개서 생성 | [POST] /x-introduction | 전선희 |
x 소개서 조회 | [POST] /x-introduction/:introductionId | 김소현 |
x 소개서 상태값 업데이트 | [PATCH] /x-introduction/:introductionId/status | 김소현 |
변수명
- Camel Case 사용
- lower Camel Case
- 함수의 경우 "동사+명사" 사용
- ex) getStatus()
- flag로 사용 되는 변수는 조동사 + flag 종류로 구성
- ex) isExist
- 약어는 되도록 사용하지 않는다.
- 부득이하게 약어가 필요하다고 판단되는 경우 팀원과 상의를 거친다.
주석
- 한줄 주석은 // 를 사용한다.
// 한줄 주석일 때
/**
* 여러줄
* 주석일 때
*/
- 함수에 대한 주석
/**
* @route Method /Route
* @desc Function Description
* @access Public
*/
- Bracket 사용 시 내부에 주석을 작성한다.
if (a == 5) {
// 주석
}
Bracket
- 한줄 if 문은 여러 줄로 작성한다.
// 한줄 if 문 - 여러 줄로 작성
if(trigger) {
return;
}
- 괄호는 한칸 띄우고 사용한다.
// 괄호 사용 한칸 띄우고 사용한다.
if (left == true) {
return;
}
- Bracket 양쪽 사이를 띄어서 사용한다.
const { userId } = request.user;
비동기 함수의 사용
- async, await 함수 사용을 지향한다.
- Promise 사용은 지양한다.
- 다만 로직을 짜는 데 있어 promise를 불가피하게 사용할 경우, 주석으로 표시하고 commit에 그 이유를 작성한다.
Git Workflow
main → develop → feature/#issue_num
issue_num : issue 번호에 맞게 생성
1. issue 생성
2. local - feature/#issue_num 에서 각자 기능 작업 (issue_num : issue 번호에 맞게 생성)
3. remote - feature/#issue_num 에 Push
4. remote - develop 으로 PR
5. 코드 리뷰 후 Confirm 받고 remote - develop Merge
6. remote - develop 에 Merge 될 때 마다 모든 팀원 local - develop pull 받아 최신 상태 유지
Branch Name | 설명 |
---|---|
main | 초기 세팅 존재 |
develop | 구현 완료 브랜치 |
feature/#issue_num | 이슈 별 기능 구현 브랜치 |
태그 이름 | 설명 |
---|---|
[CHORE] | 코드 수정, 내부 파일 수정 |
[FEAT] | 새로운 기능 구현 |
[ADD] | FEAT 이외의 부수적인 코드 추가, 라이브러리 추가, 새로운 파일 생성 |
[HOTFIX] | issue나 QA에서 급한 버그 수정에 사용 |
[FIX] | 버그, 오류 해결 |
[DEL] | 쓸모 없는 코드 삭제 |
[DOCS] | README나 WIKI 등의 문서 개정 |
[CORRECT] | 주로 문법의 오류나 타입의 변경, 이름 변경에 사용 |
[MOVE] | 프로젝트 내 파일이나 코드의 이동 |
[RENAME] | 파일 이름 변경이 있을 때 사용 |
[IMPROVE] | 향상이 있을 때 사용 |
[REFACTOR] | 전면 수정이 있을 때 사용 |
🗃️ 3-Layer Architecture 적용
📁 src _
|_ 📁 constrants _
|_ 📁 controller _
|_ 📁 interface _
|_ 📁 router _
|_ 📁 service _
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model x_introduction {
introduction_id Int @id @default(autoincrement())
user_name String @db.VarChar(200)
category String @db.VarChar(400)
status String @db.VarChar(400)
password String @db.VarChar(400)
want_reason String
cannot_reason String
term DateTime @db.Date
@@map("x-introduction")
}
{
"name": "seminar4",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"dev": "nodemon",
"build": "tsc && node dist"
},
"devDependencies": {
"@types/bcryptjs": "^2.4.2",
"@types/express": "^4.17.14",
"@types/express-validator": "^3.0.0",
"@types/node": "^18.11.9",
"nodemon": "^2.0.20"
},
"dependencies": {
"@prisma/client": "^4.6.1",
"@types/cors": "^2.8.12",
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"express": "^4.18.2",
"express-validator": "^6.14.2",
"prisma": "^4.6.1"
}
}
- 개발 환경 : Typescript, Node
- 데이터베이스 : Prisma
- 서버 환경 : AWS EC2, PM2