docker docker compose v2 node yarn
- 단위 테스트
yarn
yarn test
- e2e 테스트
- .env.test 파일 생성
# .env.test 예시
APP_PORT=3000
DATABASE_HOST=localhost
DATABASE_USER=postgres
DATABASE_PASSWORD=postgres
DATABASE_PORT=5432
DATABASE_NAME=develop
SESSION_SECRET=secret
REDIS_HOST=localhost
REDIS_PORT=6379
- 실행
yarn test:e2e
- 애플리케이션 실행
- 과제 제출 편의상 실행 환경 변수 파일
.env.production
이 레포지토리에 추가되어 있습니다
yarn start:prod
- 역할(관리자, 멤버) 를 정의하는 엔티티입니다.
- 유저를 정의하는 엔티티입니다.
- email은
unique
입니다 - provider는 추후 oAuth 방식 로그인 확장을 대비한 컬럼입니다.
- 학교 페이지를 정의하는 엔티티입니다.
- city, name 쌍은
unique
입니다.
- 학교 페이지의 소식을 정의하는 엔티티입니다.
- 하나의 학교 페이지는 다수의 소식을 가질 수 있습니다. (1:N)
- 유저의 학교 페이지 구독 정보를 정의하는 엔티티입니다.
- 구독 취소 시 레코드를 삭제하지 않고
canceled_at
컬럼에 취소 날짜를 표기합니다.
src/users
├── index.ts
├── persistence
│ ├── entities
│ └── repositories
├── presentation
│ ├── controllers
│ └── dtos
├── usecase
│ ├── dtos
│ └── services
└── user.module.ts
- usecase: 비즈니스 로직을 담당하는 레이어
- presentation: 외부 클라이언트의 요청과 응답을 담당하는 레이어
- persistence: 영속성을 담당하는 레이어
- 레이어끼리의 통신은 각 레이어에 정의된
dto
로 요청 / 응답 합니다
- 역할 조회 후 필요에 따라 관리자 혹은 멤버(학생) 로 회원 가입 할 수 있습니다.
- 유저 인증은
세션, 쿠키
방식을 사용 합니다. 로그인 시 브라우저의 쿠키에 저장됩니다. - user, auth 를 제외한 모든 api는 로그인이 필요합니다.
- 유닛 테스트는 service class 만을 대상으로 단순히
repository
에서 값을 반환하는 함수를 제외한 로직만 테스트를 추가했습니다. - e2e 테스트 시 db는
pg-mem
in-memory postgresql 라이브러리를 사용했습니다.