/HARA_SERVER

당신의 선택 도우미 서비스, HARA

Primary LanguageTypeScript

HARA SERVER

HARA image

할까? 말까? 고민이 될땐 당신의 선택 도우미 서비스 해라!

31th SOPT APPJAM
프로젝트 기간: 2022.12.11 ~ 2023.01.14

Developer


윤가영 최승빈 김예린 한유진
kyY00n csb9427 leGit-y yujindonut

🛠 개발 환경


TypeScript PostgreSQL Prisma AWS

⚙️ Server Architecture

스크린샷 2023-01-13 오후 8 03 52

✉️ Dependencies Module

package.json

  "scripts": {
    "dev": "nodemon",
    "build": "tsc",
    "db:pull": "npx prisma db pull",
    "db:push": "npx prisma db push",
    "generate": "npx prisma generate",
    "pretest": "yarn generate",
    "test": "jest",
    "prepare": "husky install"
  },
  "devDependencies": {
    "@babel/core": "^7.20.7",
    "@babel/preset-env": "^7.20.2",
    "@babel/preset-typescript": "^7.18.6",
    "@types/bcryptjs": "^2.4.2",
    "@types/express": "^4.17.14",
    "@types/express-validator": "^3.0.0",
    "@types/jest": "^29.2.5",
    "@types/jsonwebtoken": "^8.5.9",
    "@types/node": "^18.11.9",
    "babel-jest": "^29.3.1",
    "husky": "^8.0.0",
    "jest": "^29.3.1",
    "nodemon": "^2.0.20",
    "supertest": "^6.3.3",
    "ts-jest": "^29.0.3",
    "typescript": "^4.9.4"
  },
  "dependencies": {
    "@prisma/client": "^4.5.0",
    "@types/supertest": "^2.0.12",
    "axios": "^1.2.2",
    "bcryptjs": "^2.4.3",
    "dotenv": "^16.0.3",
    "eslint": "^8.30.0",
    "express": "^4.18.2",
    "express-validator": "^6.14.2",
    "jest-mock-extended": "^3.0.1",
    "jsonwebtoken": "^8.5.1",
    "prisma": "^4.5.0",
    "supertest": "^6.3.3"
  },

🌴 HARA Directory Tree

📁 HARA
├── .github
├── husky
├── prisma
├── scripts
├── src
│   ├── constants
│   ├── common
│   ├── config
│   ├── controller
│       ├── random
│       ├── vote
│       ├── worryAlone
│       └── worryWith
│   ├── interfaces
│   ├── middlwares
│   ├── modules
│   ├── repository
│   ├── router
│   └── services
└── test

📋 Model Diagram

image

📧API 명세서

baseURL : 3.37.47.67:3000
https://daffy-lawyer-1b8.notion.site/634f31cafc93476888b5fdb9e5c37184?v=63b654ebfce44823b2209beac83518fd

🙋🏻‍♀️ HARA APIs

EndPoint detail Method developer done
Worry 고민글 투표하기 POST 유진
고민글 전체조회 GET 유진
개인 고민글 생성 POST 예린
함께 고민글 생성 POST 예린
함께 고민 목록 조회 GET 승빈
혼자 고민 목록 조회 GET 승빈
혼자 고민 삭제 PUT 유진
함께 고민 삭제 PUT 유진
혼자 고민 최종결정 PATCH 가영
함께 고민 최종결정 PATCH 가영
고민 목록 검색 GET 예린
혼자 고민 상세 조회 GET 예린
함께 고민 상세 조회 GET 예린
고민글에 대한 댓글 조회 GET 예린
고민글에 대한 댓글 생성 POST 승빈
Random 랜덤답변 GET 승빈
간단 질문 입력하기 POST 승빈
과거 고민 목록 조회 GET 유진
과거 고민 상세 조회 GET 승빈
User 유저 정보 가져오기 GET 가영
유저 정보 수정하기 POST 승빈
유저 탈퇴하기 PATCH 유진
Settings 이용약관 조회 GET 승빈
만든사람들 조회 GET 승빈

✉️ Commit Messge Rules

서버 들의 Git Commit Message Rules

  • 반영사항을 바로 확인할 수 있도록 작은 기능 하나라도 구현되면 커밋을 권장합니다.
  • 기능 구현이 완벽하지 않을 땐, 각자 브랜치에 커밋을 해주세요.

📌 Commit Convention

[태그] 제목의 형태

태그 이름 설명
FEAT 새로운 기능을 추가할 경우
FIX 버그를 고친 경우
CHORE 짜잘한 수정
DOCS 문서 수정
INIT 초기 설정
TEST 테스트 코드, 리펙토링 테스트 코드 추가
RENAME 파일 혹은 폴더명을 수정하거나 옮기는 작업인 경우
STYLE 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
REFACTOR 코드 리팩토링

커밋 타입

  • [태그] 설명 형식으로 커밋 메시지를 작성합니다.
  • 태그는 영어를 쓰고 대문자로 작성합니다.

예시 >

  [FEAT] 검색 api 추가

💻 Github mangement

해라 들의 WorkFlow : Gitflow Workflow

  • Develop, Feature, Hotfix 브랜치

  • 개발(develop): 기능들의 통합 브랜치

  • 기능 단위 개발(feature): 기능 단위 브랜치

  • 버그 수정 및 갑작스런 수정(hotfix): 수정 사항 발생 시 브랜치

  • 개발 브랜치 아래 기능별 브랜치를 만들어 작성합니다.

✍🏻 Code Convention

에어비앤비 코드 컨벤션

📍 Gitflow 규칙

  • Develop에 직접적인 commit, push는 금지합니다.
  • 커밋 메세지는 다른 사람들이 봐도 이해할 수 있게 써주세요.
  • 작업 이전에 issue 작성 후 pullrequest 와 issue를 연동해 주세요.
  • 풀리퀘스트를 통해 코드 리뷰를 전원이 코드리뷰를 진행합니다.
  • 기능 개발 시 개발 브랜치에서 feature/기능 으로 브랜치를 파서 관리합니다.
  • feature 자세한 기능 한 가지를 담당하며, 기능 개발이 완료되면 각자의 브랜치로 Pull Request를 보냅니다.
  • 각자가 기간 동안 맡은 역할을 전부 수행하면, 각자 브랜치에서 develop브랜치로 Pull Request를 보냅니다.
    develop 브랜치로의 Pull Request는 상대방의 코드리뷰 후에 merge할 수 있습니다.

❗️ branch naming convention

  • develop
  • feature/issue_number - Short Description
  • release/version_number
  • hotfix/issue_number - Short Description

📋 Code Review Convention

  • P1: 꼭 반영해주세요 (Request changes)

  • P2: 적극적으로 고려해주세요 (Request changes)

  • P3: 웬만하면 반영해 주세요 (Comment)

  • P4: 반영해도 좋고 넘어가도 좋습니다 (Approve)

  • P5: 그냥 사소한 의견입니다 (Approve)

  • D-0 (ASAP)

긴급한 수정사항으로 바로 리뷰해 주세요. 앱의 오류로 인해 장애가 발생하거나, 빌드가 되지 않는 등 긴급 이슈가 발생할 때 사용합니다.

  • D-N (Within N days)

“Working Day 기준으로 N일 이내에 리뷰해 주세요”