팀원: 강선영, 조성은, 김수빈, 김현빈, 이의영
프로젝트 이름: Todo List
목표: 사용자들이 할 일을 효율적으로 관리할 수 있는 Todo List 웹 애플리케이션을 개발한다. 기본적인 할 일 관리 기능뿐만 아니라, 카테고리 분류, 검색 등 다양한 기능을 제공하여 사용자가 직관적으로 할 일을 관리할 수 있도록 한다.
- 설명: 사용자가 새로운 할 일을 추가할 수 있는 입력 필드를 제공한다.
- 구현 요소:
- 입력 필드 (text)
- 추가 버튼 (클릭 시 할 일이 목록에 추가됨)
- 설명: 각 할 일 항목에 대해 추가, 삭제, 수정을 할 수 있는 기능을 제공한다.
- 구현 요소:
- 할 일 항목마다 수정 버튼, 삭제 버튼 제공
- 수정 기능:
- 수정 팝업 또는 수정 페이지에서 수정 가능
- 삭제 기능:
- 삭제 버튼 클릭 시 해당 할 일을 삭제
- 설명: 추가된 할 일들이 리스트로 표시된다.
- 구현 요소:
- 할 일 목록 리스트는 사용자가 쉽게 확인할 수 있는 형태로 표시
- 드래그앤드롭 순서 변경 기능: 사용자가 할 일의 우선순위를 쉽게 조정할 수 있도록, 할 일을 드래그앤드롭하여 목록 순서를 변경할 수 있는 기능 구현
- 설명: 서버를 구축하지 않은 경우, 할 일 목록의 데이터를 Local Storage에 저장하여 새로고침 후에도 데이터가 유지되도록 한다.
- 설명: 사용자가 입력한 키워드로 할 일 목록에서 해당 키워드가 포함된 항목을 검색할 수 있는 기능 제공
- 구현 요소:
- 검색 입력 필드 및 검색 버튼
- 할 일 목록에서 해당 키워드가 포함된 항목을 검색할 수 있는 기능
- 설명: 서버를 구축하여 데이터를 중앙에서 관리할 수 있도록 한다. 서버 API를 통해 할 일의 추가, 삭제, 수정, 조회 기능을 구현한다.
- 구현
- 설명: 사용자가 완료한 할 일과 아직 완료하지 않은 할 일을 구분하여 볼 수 있는 기능 제공
- 구현 방법:
- 별도의 섹션(완료/미완료)으로 구분
- 설명: 할 일에 카테고리를 부여하여 할 일 목록을 분류할 수 있는 기능 제공
- 예시 카테고리: 오늘 할일, 간단한 메모, 완료
- 구현 요소:
- 할 일 입력 시 카테고리 선택 가능하도록 select 요소 제공
- 카테고리 선택 시 해당 카테고리에 해당하는 할 일만 목록에 표시
- 설명: 카테고리 옵션과 검색 키워드를 함께 활용하여 필터링된 할 일 목록을 제공하는 기능 구현
- 구현 요소:
- 카테고리 선택 필드 (select)
- 검색 필드 (text) 및 검색 버튼
- 기능 추가에 따른 UI 추가는 공통 UI 활용하기.
- 예: 할일 항목 뷰 팝업 안에 edit 버튼 / 완료 or 미완료 토글 버튼
- HTTP 메소드: POST
- URL:
/todos
- Request Body 예시:
{ "title": "새 Todo 제목", "description": "Todo 내용", "category": "category" }
- Response 예시:
{ "id": "생성된 Todo ID", "title": "새 Todo 제목", "description": "Todo 내용", "category": "category", "createdAt": "2024-08-18T00:00:00Z", "updatedAt": "2024-08-18T00:00:00Z" }
- HTTP 메소드: GET
- URL:
/todos
- Response 예시:
[ { "id": "1", "title": "첫 번째 Todo", "description": "할 일 내용", "category": "category", "createdAt": "2024-08-18T00:00:00Z", "updatedAt": "2024-08-18T00:00:00Z" }, { "id": "2", "title": "두 번째 Todo", "description": "할 일 내용", "category": "category", "createdAt": "2024-08-18T00:00:00Z", "updatedAt": "2024-08-18T00:00:00Z" } ]
- HTTP 메소드: GET
- URL:
/todos/{todoId}
- Response 예시:
{ "id": "1", "title": "첫 번째 Todo", "description": "할 일 내용", "category": "category", "createdAt": "2024-08-18T00:00:00Z", "updatedAt": "2024-08-18T00:00:00Z" }
- HTTP 메소드: PUT
- URL:
/todos/{todoId}
- Request Body 예시:
{ "title": "수정된 제목", "description": "수정된 내용", "category": "category" }
- Response 예시:
{ "id": "1", "title": "수정된 제목", "description": "수정된 내용", "category": "category", "createdAt": "2024-08-18T00:00:00Z", "updatedAt": "2024-08-18T01:00:00Z" }
- HTTP 메소드: DELETE
- URL:
/todos/{todoId}
- Description: 지정한 Todo 항목을 삭제합니다.
1-1. 상단 : 새 할일 추가 영역
-
화면 설명: 할 일 입력 필드 및 추가 버튼
-
유효성 체크: 필수 입력 값 모두 입력 후 add 버튼 클릭 시 저장(POST)
1-1-1. 플러스 버튼 (보너스): 새 할일 버튼 따로 구현한다면, 기존 new ToDo 영역 (1-1. 화면 상단 부분)은 없어지고 플러스 버튼 클릭 시 NewToDo 모달창으로 구현함.
1-2. 중앙 : 검색 영역
- 화면 설명: 할 일 목록 검색 및 카테고리 필터링 영역. 검색 값과 카테고리 선택 값에 따라 1-3. 할일 목록 영역의 할 일 데이터 변경.
- 유효성 체크:
- 검색 값 미 입력 혹은 온전한 문자가 아닌 경우, 알림 문구 & 검색 안 되고 전체 리스트 보임.
1-3. 할 일 목록 영역
1-3-1. 각 할 일 항목 오른쪽 영역
- 수정 및 삭제 버튼
- 수정 클릭 시 수정 팝업에서 할 일 수정 가능 (UPDATE)
- 삭제 버튼 클릭 시 할 일 항목 삭제 (DELETE)
1-3-2. 할 일 항목 왼쪽 영역
- 할 일 순서 변경을 위한 드래그앤드롭 그렙 영역
- 그렙 영역 드래그앤드롭해서 할 일 항목 순서 변경 가능
- 할 일 완료 여부 체크박스
- 할 일을 완료했을 때 체크박스를 통해 완료 표시
- 완료된 할 일과 미완료된 할 일을 시각적으로 구분
1-3-3. 할 일 미등록 시, 할 일 목록 영역 empty 이미지 or 문구 표시
- 화면 설명: 사용자가 할 일을 수정할 수 있는 입력 필드 및 저장 버튼 제공
- 유효성 체크: 할 일 수정 시 필수 입력값 모두 입력 후 save 버튼 클릭 시 저장(UPDATE)
- 프론트엔드:
- HTML: 웹 페이지 구조 정의
- CSS: 스타일과 레이아웃 설계
- JavaScript: 동적 기능 구현
- EJS (보너스): 서버에서 데이터를 템플릿에 삽입하여 HTML 동적 생성
- 백엔드 (보너스):
- Node.js: 서버 사이드 JavaScript 실행 런타임 환경
- Express: Node.js를 위한 웹 애플리케이션 프레임워크, API 및 서버 로직 처리
- 데이터베이스 (보너스):
- MongoDB: NoSQL 데이터베이스, JSON 유사 데이터 저장
- MySQL: 관계형 데이터베이스 관리 시스템(RDBMS), 구조화된 데이터 저장 (선택 사항)
- 데이터 저장 (서버 미구축 시):
- Local Storage: 브라우저에 클라이언트 측 데이터 저장, 새로고침 후 데이터 유지
- 기타 라이브러리 (보너스):
- axios: HTTP 요청 처리 클라이언트 라이브러리
- body-parser: 요청 본문 구문 분석하여 서버에서 처리
- cors: 다른 출처의 요청 허용/제한 미들웨어
- dotenv: 환경 변수 관리 및 비밀 정보 저장
- mongoose: MongoDB 데이터 모델링 지원 ODM(Object Data Modeling) 라이브러리
- nodemon: 파일 변경 시 자동으로 서버 재시작
- 기획 및 설계: 2024.08.18
- 프론트엔드 개발: 2024.08.19
- 백엔드 개발 (보너스): 2024.08.20
- 테스트 및 디버깅: 2024.08.20
- 기능 우선순위: 필수 요구사항을 우선적으로 개발하고, 보너스 요구사항은 시간에 따라 구현 여부를 결정합니다.
- 반응형 디자인: 다양한 기기에서의 사용성을 고려하여 CSS 미디어 쿼리 등을 사용하여 디자인을 조정합니다.