Skip to content

TeamShortWeather/ShortWeather-Server

Repository files navigation

☀️☁️☔️ShortWeather-Server☀️☁️☔️

31th IN SOPT ShortWeather
프로젝트 기간 : 2022.12.10 ~


☀️ Server ☀️

김민욱 김도연 강수현
coreminw doyeoo onpyeong

🌥 서비스 핵심 기능 소개 🌥

cover


☀️ Used ☀️


TypeScript PostgreSQL Prisma AWS
Prettier ESLint


☁️ Coding Convention ☁️


네이밍

DB

  • DB 이름은 UpperCamelCase를 사용합니다.

함수, 변수, 타입

  • 함수와 변수에는 lowerCamelCase를 사용합니다.
  • 함수명은 동사로 시작합니다.
  • 타입명은 파스칼케이스를 사용합니다.
    • interface이름에 I를 붙이지 않습니다.
  • 기본 클래스 파일을 생성하거나 컴포넌트를 생성할 때는 약어 규칙에 따라 네이밍합니다.

변수 네이밍

  • 날씨 → weather
  • 유저 → user
  • 배열을 담은 변수→ ~s(복수형)
  • 상태 → status


✉️ Commit Convention

[CHORE] 코드 수정, 내부 파일 수정 
[FEAT] 새로운 기능 구현 
[ADD] Feat 이외의 부수적인 코드 추가, 라이브러리 추가, 새로운 파일 생성 시, 에셋 추가
[HOTFIX] issue나, QA에서 급한 버그 수정에 사용
[FIX] 버그, 오류 해결
[REMOVE] 쓸모없는 코드 삭제 
[DOCS] README나 WIKI 등의 문서 개정
[MOVE] 프로젝트 내 파일이나 코드의 이동 
[RENAME] 파일 이름, 변수명, 함수명 변경이 있을 때 사용합니다. 
[REFACTOR] 전면 수정이 있을 때 사용합니다 

✨ 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
  • 탭이름 - Weather, User
  • 공통적인 것 작업 - Global
    • feature/chore/fix/network

💡 이슈, PR 규칙


📌 Issue명 = PR명

  • [FEAT] - 기능 구현
  • [FIX] - 버그 수정
  • [REFACTOR] - 코드 리팩토링(결과물은 같지만 코드의 향상)
  • [CHORE] - 수정
  • [ADD] - 세팅 및 라이브러리 추가

☔️ APIs ☔️

EndPoint detail developer done
User 유저 등록 확인 수현
유정 정보 입력하기 수현
Setting 기상시간 설정 민욱 앱잼이후
외출/귀가시간대 설정 민욱 앱잼이후
Weather1 오늘 날씨 정보 조회 수현
물음표 메세지 조회 수현
Weather2 오늘 날씨 정보 상세 조회 도연
시간대별 날씨 - 날씨 조회 도연
시간대별 날씨 - 강수 조회 민욱
Schedule 하루 예보 저장 도연
시간대별 예보 저장 민욱
실시간 관측값 저장 수현


ERD & Directory Tree

🗄 ERD 스크린샷 2023-01-13 04 45 51

📦 Directory Tree
	
├── tsconfig.json
├── nodemone.json
├── package.json
└── src
    ├── config
    ├── controllers
    ├── interfaces
    ├── loaders
    ├── middleware
    ├── modules
    ├── routes
    ├── service
    └──  index.ts
└── test


package.json

{
  "name": "node-typescript-init",
  "version": "1.0.0",
  "description": "> 31th IN SOPT ShortWeather <br>\r > 프로젝트 기간 : 2022.12.10 ~",
  "main": "index.js",
  "scripts": {
    "dev": "nodemon",
    "build": "tsc && node dist",
    "test": "mocha test/* --timeout 10000 -exit -r ts-node/register",
    "prepare": "husky install"
  },
  "author": "doyeoo <ehdusla013@gmail.com>",
  "license": "ISC",
  "devDependencies": {
    "@types/express": "^4.17.15",
    "@types/jsonwebtoken": "^8.5.8",
    "@types/mocha": "^9.1.1",
    "@types/multer": "^1.4.7",
    "@types/multer-s3": "^2.7.12",
    "@types/mysql": "^2.15.21",
    "@types/node": "^18.11.18",
    "@typescript-eslint/eslint-plugin": "^5.30.5",
    "@typescript-eslint/parser": "^5.30.5",
    "chai": "^4.3.7",
    "eslint": "^8.19.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-config-airbnb-typescript": "^17.0.0",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-prettier": "^4.2.1",
    "husky": "^8.0.0",
    "jest": "^29.3.1",
    "mocha": "^10.2.0",
    "nodemon": "^2.0.20",
    "supertest": "^6.3.3",
    "ts-node": "^10.7.0",
    "typescript": "^4.6.3"
  },
  "dependencies": {
    "@prisma/client": "^4.8.1",
    "apple-auth": "^1.0.7",
    "aws-sdk": "^2.1171.0",
    "axios": "^1.2.2",
    "dayjs": "^1.11.7",
    "dotenv": "^16.0.0",
    "express": "^4.18.2",
    "express-validator": "^6.14.0",
    "firebase-admin": "^11.0.0",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.21",
    "logger": "^0.0.1",
    "moment": "^2.29.4",
    "moment-timezone": "^0.5.38",
    "multer": "^1.4.4",
    "multer-s3": "^2.10.0",
    "mysql": "^2.18.1",
    "mysql2": "^2.3.3",
    "node-schedule": "^2.1.0",
    "pg": "^8.7.3",
    "prisma": "^4.8.1",
    "reflect-metadata": "^0.1.13",
    "request": "^2.88.2",
    "typeorm": "^0.2",
    "typeorm-naming-strategies": "^2.0.0"
  },
  "husky": {
    "hooks": {
      "pre-push": "yarn run test"
    }
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/TeamShortWeather/ShortWeather-Server.git"
  },
  "bugs": {
    "url": "https://github.com/TeamShortWeather/ShortWeather-Server/issues"
  },
  "homepage": "https://github.com/TeamShortWeather/ShortWeather-Server#readme",
  "directories": {
    "test": "test"
  },
  "keywords": []
}

Server architecture

archetecture

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published