Cashbook 8

1 minute read

CASHBOOK-8

우아한 테크 캠프에서 진행한 세 번째 프로젝트, 우아한 가계부

Github repository

Package Manager

yarn

.gitignore

  • vscode/
  • DS_Store

.github

  • ISSUE_TEMPLATE.md
  • PULL_REQUEST_TEMPLATE.md

Backend

Dependencies

  • typescipt v4.3.5
  • eslint v7.31.0
    • eslint-config-standard
    • eslint-plugin-import
    • eslint-plugin-node
    • eslint-plugin-promise
  • express v4.17.1
  • dotenv v10.0.0
  • mysql2 v2.2.5
  • typeorm v0.2.34
  • class-validator v0.13.1
  • node-fetch v2.6.1
  • jsonwebtoken v8.5.1
  • cors v2.8.5

scripts

"lint": "eslint src/**/*.ts",
"start": "tsc && node dist/server.js",
"build": "tsc"

디렉토리 구조

### server.ts

entry file

database connect 후 서버 실행

### app.ts

express 미들웨어 설정

/api router 설정

### routers

router 설정

### controllers

request 데이터 검증

service 호출

response 보냄

### services

repository 호출 후 필요한 경우 데이터 반환

에러 핸들링

### repositories

typeorm을 이용해서 db에 쿼리 날린 결과 반환

### entities

typeorm에서 사용할 엔티티 설정

### database

database options 설정

connection을 만들어 반환

### middlewares

express custom middleware 작성

* auth middleware: oauth 인증 관련 요청 처리와 에러 응답

* error middleware: request에 대한 에러 분기 처리하여 응답

### third-party

다른 서버에 보낼 api 요청

### request

class-validator 사용한 request 데이터 검증

### errors

에러 타입 정의와 메시지 설정

### config

* dotenv: .env에서 가져올 설정 데이터를 export하고 없는 경우 에러 핸들링

### types

* express.d: typescript에서 request의 데이터 타입 설정을 위한 declare

### enums

enum 정의

### lib

* wrap-async: 비동기 함수 에러 핸들링

### utils

자잘한 유용한 것들

Oauth 2.0

/api/auth/callback 으로 들어온 request에서 code를 가져온다.

이 code를 사용해서 github oauth 서버에서 access token을 받아온다.

이 access token을 사용해서 github api 서버에서 사용자 정보를 가져온다.

이 사용자 정보로 jwt를 발급 받아서 response cookie에 넣고, client를 redirect해준다.

Frontend

Webpack 설정

Categories:

Updated: