매일 할일에 대한 체크리스트 on redgoose note

매일 할일에 대한 체크리스트

Nest: Concept Category: Programing 2020-11-02

모바일 게임하다가 매일 해야하는 숙제때문에 아이디어가 떠올랐는데 마크다운으로 자유롭게 글을 입력하고 매일마다 할일을 끝냈는지 체크하는 목적을 가진 프로그램을 구상할 수 있었다.
매일매일 할일들을 설정해두고 했는지 안했는지 확인을 쉽게하기 위한 도구라고 볼 수 있다.

  • 체크리스트가 포함된 문서를 작성하고 초기화되는 시간을 설정한다.
  • 마크다운에서 - [x] message 부분을 통하여 항목을 체크할 수 있는것을 이용하여 본문 내용에서 항목을 체크하고 푼다.
  • 지정된 초기화되는 시간에 체크되어있는 것들을 전부 풀어준다.
  • 아니면 버튼을 눌러 초기화하여 체크를 전부 풀어준다.
  • 내용을 마크다운 형식으로 작성할 수 있으면 문서를 자유롭게 구성할 수 있다.

단순히 겉 모습만 만든다면 이전의 기록들에 대한 히스토리를 만들 수 없지만 별도의 프로젝트로 만들 생각이고 서버 데이터베이스 사용할 목표가 아니어서

데이터 리셋

지정한 시간대에 체크항목이 전부 풀리는것을 베이스로 둬야한다.
체크시트가 쌓이도록 한다면 체크를 풀고 내용을 복제하면 될거 같은데 그 타이밍이 리셋 시간이 지났을때 접속을 하는때가 되거나 체크완료라는 확인을 했을때 시점일 것이다.

구체적인 UI를 따로 그려보면서 고민해봐야 할것이다.

기술적인 고민들

기술스택

  • vue.js
  • IndexedDB

로컬 데이터베이스

브라우저에서 로컬 데이터베이스를 사용할 수 있는거 같다. 그래서 기술적인 검토를 해볼 필요가 있지 않을까..
하지만 여러가지 디바이스에서 동일하게 사용할 수 없기 때문에 뭔가 다른방법이 필요해 보인다.

IndexedDB 객체를 사용하는것이 가장 나아보인다. webSQL이라는것도 있는데 표준에서 폐기되는거 같아 보인다.

데이터 싱크

로컬에서는 문제없겠지만 다른 디바이스에서 동일하게 데이터를 유지하려면 구글이나 github같은 서비스를 이용하여 인증을 해야할것이다.
우선 로컬 데이터 위주로 작업하고나서 추후에 외부 서비스와의 연동을 고려해봐야한다.
로컬 데이터로 작업하고 import, export기능까지 구현하는것으로 1차 목표일 것이다.

firestore

원신 지도 프로젝트를 살표보니 firestore를 이용하고 있는것을 확인할 수 있었다.
하지만 데이터가 중앙 집중식이라서 이 프로젝트와 맞지 않는다.

Comments

  • 불특정다수의 사람들이 사용하면 데이터를 중앙집중식으로 저장하면 안된다. 그저 이것은 툴로써까지 역할을 원하지 서비스로 만들기는 싫다.

    그래서 사용자 각각의 공간에 저장되어 있어야 한다.

    1차적으로 브라우저 개인 로컬저장소에 저장을 해두고 데이터타입은 json형태로 넣고 뺄 수 있도록 설계해두어야 할것이다.

    처음에는 로컬로 작동 가능하도록 구축을 해놓고 그 이후에 데이터 싱킹에 대한 고민을 해봐야 할것이다.
    dropboxgoogle drive같은 서비스 API를 활용하는것도 어떨까... 그러면 각자의 공간에 저장해두고 가져올 수 있지 않을까.. 실제로 dropbox 연계로 앱 설정값을 연동해서 쓰고있는 앱들이 많다.

    Written on 2020-11-02
  • 명칭에 대하여..

    프로젝트 이름은 checker-board로 정했고, github 주소는 https://github.com/redgoose-dev/checker-board 이다.

    보드 (board)

    하루에 하나씩, 작은 단위이며 가장 기본적인 단위라고 볼 수 있다.
    매일 하루에 하나씩 생성되며 갱신되는 시간이 지났을때 페이지에 접근을 하면 이전 보드에서 복제되어 생성된다.
    만약 처음 만들어지면 빈 내용으로 표시된다.

    보드 목록으로 보려면 오늘날짜까지의 보드들을 목록으로 출력한다.

    박스 (box)

    보드들을 그룹짓는 기능을 한다.
    박스라는 개념이 생겨난 이유는 보드의 내용이 항상 고정되어 있기 때문에 완전히 다른 내용을 새로 작성하려면 새로운 보드를 만들어야 할것이다. 그래서 그것들을 관리하기 위한 개념이라고 볼 수 있다.

    여러개의 박스가 있고, 하나의 박스속에 날짜별로 여러개의 보드들이 들어있는 관계라고 볼 수 있다.

    Written on 2020-11-03
  • 주요 기능

    • 박스목록 (리셋시간 설정. 이 리셋시간 이후에 새로운 보드가 자동으로 만들어진다.)
    • 박스 작성, 수정, 삭제
    • 보드 목록 (보드는 날짜별로 기준이 됨. 이건 핵심적인 개념이다.)
    • 보드 작성, 수정, 삭제
    • 보드 프리뷰
    • 체크 업데이트
    • import, export (json 데이터)
    • 박스에서 설정된 시간이 지났을때 새로운 보드생성 (이전보드에서 모든 체크를 풀고 그것을 복제하기)
    • 에디터 툴바 (체크박스 양식 입력, 필요한 기능 고민해보기)
    Written on 2020-11-03
  • 오늘이 지난 보드는 수정 못하도록 하는게 좋을것이다. 지난 내용을 변조하는건 좋아 보이지 않는다. 그렇다면 코멘트같은 항목을 통하여 그 날짜에 대한 간략한 멘트로 평가 하거나 메모하는것이 좋지 않을까..

    확실한것은 지난날의 보드는 수정, 삭제는 못하도록 막는다는 것이다.

    그러면 체킹을 하지 않는데 실수로 보드가 만들어질때는 어떨까.. 일단 오늘의 보드는 삭제 기능이 있어야 하지만 지난 보드의 삭제는 음... 고민이 좀 필요해 보인다. 일단 안되도록 두고 나중에 삭제 기능을 넣으면서 경고 메시지를 붙여넣어야해 보인다.

    Written on 2020-11-04