Skip to content

Latest commit

 

History

History
67 lines (59 loc) · 3.17 KB

README.md

File metadata and controls

67 lines (59 loc) · 3.17 KB

node-todo-app

Node로 구현한 Todo API입니다.

요구 사항

  • Node.js v16, MySQL 5.6, TypeScript 를 사용해야 한다.
  • Express.js MVC 구조를 설계해야 한다.
  • NestJs 마이그레이션을 포함한다.
  • GraphQL 마이그레이션을 포함한다.
  • 아래 API 스펙을 만족하는 REST API 설계와 데이터베이스 설계가 되어야 한다.
  • 서버와 데이터베이스 타임존이 UTC 로 가정하되, 조회는 KST 기준으로 해야 한다.
  • API 스펙 내에서 발생할 수 있는 예외 케이스들은 적절한 응답과 함께 별도의 형식으로 처리되어야 한다.
  • 모든 응답은 JSON 으로 반환해야 한다.
  • ORM 은 어떤것을 선택해도 상관없으나, TypeORM 과 MikroORM 을 권장한다.
  • 카카오스타일 TypeScript 스타일 가이드를 준수해서 작성해야 한다.

API 스펙

  • 사용자는 할 일을 생성할 수 있다.
    • 할 일이 생성될 때 마다 생성되는 필드가 있어야 한다. (date_created)
    • 할 일이 수정될 때 마다 갱신되는 필드가 있어야 한다. (date_updated)
    • 할 일의 제목(title) 을 설정할 수 있어야 하며, 반드시 존재해야 한다.
    • 할 일의 상태(status) 를 설정할 수 있어야 하며, 상태는 TODO, IN_PROGRESS, DONE 으로 구성되어야 한다.
      • 기본 값은 TODO 이다.
    • 할 일의 우선순위(priority) 를 설정할 수 있어야 하며, 우선순위는 Number 타입이어야 한다.
    • 할 일의 마감일 (deadline) 을 설정할 수 있어야 하며, 설정하지 않을 수도 있다.
  • 사용자는 할 일 목록을 조회할 수 있다.
    • 할 일의 제목(title) 로 목록을 조회할 수 있다.
      • 제목의 일부로도 검색할 수 있어야 한다.
    • 할 일의 상태(status)로 목록을 조회할 수 있다.
    • 할 일의 우선순위(priority) 로 정렬 순서를 바꿀 수 있다.
    • 할 일의 마감일(deadline)로 목록을 조회할 수 있다.
      • 조회를 원하는 시작일과 종료일을 YYYY-MM-DD 형식으로 받아야 한다.
    • 할 일의 완료일(date_completed) 으로 목록을 조회할 수 있다.
      • 조회를 원하는 시작일과 종료일을 YYYY-MM-DD 형식으로 받아야 한다.
    • 목록 조회는 페이지네이션이 되어야 한다.
    • 목록 조회는 우선순위 오름차순으로 기본 정렬이 되어 있어야 한다.
  • 사용자는 할 일 상세 정보를 조회할 수 있다.
  • 사용자는 할 일을 변경할 수 있다.
    • 할 일의 상태가 DONE 으로 변경될 때 완료일(date_completed) 이 변경되어야 한다.
    • 완료된 할 일은 수정할 수 없어야 한다.
  • 사용자는 할 일을 삭제할 수 있다.
    • 완료된 할 일은 삭제할 수 없다.

예시

  • 할 일 목록 조회
    • 요청 예시
      GET /todos
      
    • 응답 예시
      [
        {
          "title": "할 일",
          "status": "TODO",
          "priority": 1,
          "deadline": "2022-06-28T14:59:59.999Z",
          "date_create": "2022-06-24T14:59:59.999Z",
          "date_updated": "2022-06-24T14:59:59.999Z"
        }
      ]