chang12 / django-todo Goto Github PK
View Code? Open in Web Editor NEWSimple TODO web app written in Django (Python Web Framework)
Home Page: http://todo.fakenerd.kr/
Simple TODO web app written in Django (Python Web Framework)
Home Page: http://todo.fakenerd.kr/
할일 기록
의 힘든 점은, 유익할 것 같아서 기록해둔 많은 할일
들이다.Backlog
> In Preparation
> Doing
> In Review
> Finished
정도로 구성해볼 수 있을 것이다. IT 서비스가 아니므로 Released
같은 단계는 존재하지 않는다. 더 담백하게 가자면 In Preparation
은 지울 수 있을 것이고, In Review
는 고민해볼만 하다. 일을 최초로 마치는 것과, 리뷰를 통해 더 개선시키는 단계는 필요에 따라 구분지을 만 하기 때문이다.Task
들의 생명 주기 소속과, 변경 후 Task
들의 생명 주기 소속을 맞춰줘야한다.Task
들의 마이그레이션을 진행할 수 있겠다.Task 상세 내용을 볼때는 내용물에 맞춰서 modal 이 커진다. 편집 화면에서도 <textarea> 태그가 내용물에 따라서 크기가 커질 수 있으면 좋을 것이다.
연쇄적인 상승/하강이 가능하도록 UX를 변경하고 싶다. 이에 맞는 개발을 진행한다.
AJAX로 할 수 있겠지만, 가능한 피해보고 싶다. 그러므로 index.html
파일을 띄울때 옵션을 줄 수 있도록 변경한다. 만약 Task의 상승/하강 이후 리다이렉트로 인한 index.html
이라면 어떤 Task에 대한 상승/하강 이었는지 정보를 view에 알려줘서 해당 Task는 list-group-item-warning
으로 설정하고 띄울 수 있도록 한다.
Task의 개수가 많아서 스크롤이 생성될 경우에도 상단 navbar와 버튼 그룹은 고정될 수 있도록 UI를 수정한다.
Task의 title 길이가 max_length
를 초과한 상태에서 submit 한 경우 입력한 데이터를 모두 상실하고, Task는 등록되지 않는다.
index
뷰에서 Task ModelForm으로 인스턴스를 저장할때, 에러가 발생한 경우 처리 로직이 없다.
뷰에 적절한 로직을 추가해서, 템플릿 폼에 입력한 내역을 상실하지 않은 상태에서, 에러 메시지를 띄워준다.
Django 공식 문서 를 참고해본다.
매일 혹은 주기적으로 해야할 일들을 기록하고 관리하고 싶을때는 어떤식으로 접근할 수 있을까?
등등이 생각해볼 수 있는 예시들이다.
반복 주기마다 새로운 Task 를 생성해서 리스트에 추가한다. 아마 별다른 설정이 불가능할 것 같으니, 최상단에 추가되게 하는것이 유일한 방법일 것이다.
이에 더하여 이러한 주기성을 지니는 Task 스트림(?)들은 따로 관리할 수 있도록 탭을 제공한다. 반복 주기 대비 실제 완료되는 시기를 비교하여 다양한 통계를 내주는것이 가능할 것이다.
같은 스트림에 속하는 Task 들이라는 것을 명시하기 위해서, 이름을 통일한다던가, 라벨링을 한다던가 식의 작업이 필요할 것.
좀 큰 작업이겠지만, advanced 보다는 enhancement 가 맞겠다.
달력에 대한 얘기들이 들어가야 할 것이다~!!
추가
버튼만 존재한다.상세
: 해당 Task의 상세정보를 모달 팝업으로 보여준다 (수정
버튼 내재)상승
/ 하강
: 해당 Task를 이동완료
: 해당 Task를 완결navbar 가 넘나커서 추가
버튼이 가려진다. 그래서 새로운 Task 를 추가할 수 없다.
Bootstrap의 Component 문서에서 우측 배치에 대한 내용이 있었던걸로 기억한다.
Task 보여질때 URL를 인식해서 클릭할 수 있게 해주고, 엔터는 줄 바꿈을 인식해준다.
일단락 짓고 마무리 작업으로 하면 될 듯!
- [ ] 추가 버튼을 클릭하면 modal이 뜨고 input 태그와 추가 버튼이 다시 뜬다.
- [ ] modal의 추가 버튼을 누르면 새로운 Task 생성이 요청되고, 성공할 경우 메인 페이지로 리다이렉트
지금은 Task 모델에 updated_at 필드뿐이 없는데, 완료시각을 따로 기록할 필드가 필요하다. 아마 보류시각이랑 재개시작도 필요할듯.
메인 탭(index.html)에서는 Task 들의 관리(생성, 수정, 완료, 우선순위 변동) 작업이 이뤄진다. 이에 반해 통계 탭에서는 메인 탭에서 이뤄진 각종 액티비티에 대한 로그를 분석해서 유의미한 통계 정보를 유저가 확인할 수 있도록 돕는다. (사실 navbar
에 로그아웃 버튼뿐이라 좀 허전해서....)
그러므로 어떤 유의미한 통계 정보가 추출 될 수 있을지 먼저 생각해봐야한다. 이 또한 GitHub의 Pulse나 Graphs 탭을 벤치마킹 할 수 있을 것이다.
한국어에 대해서만 준비한다. 다른 나라 언어의 경우 영어를 그대로 보인다.
추가
버튼 누르고 Form 작성하다가 Task 클릭하면 Form은 그대로 두고 버튼 그룹만 바뀐다.추가
버튼을 보일지, 생성
/취소
버튼을 보일지 선택한다.검색해준다.
무의미한 Task라 생각하면 삭제한다. DB에는 가지고 있는다.
메인 화면에는 안보이지만, 킾해두고 싶을때 보류.
일종의 백-로그 역할을 수행.
그러므로 백-로그 탭도 추가해야 한다.
JIRA 의 issue 개수에 대한 그래프랑 비슷하게 가져갈 수 있겠다. 시간에 따른 누적 그래프.
Task 생성 과정에서 에러가 발생할 경우, 이를 index.html
의 해당 form
에 반영해서 유저에게 알려줍니다.
혼자 쓸때는 멀티 디바이스로 동시에 작업할 일이 없다. 만약 여러명이 하나의 Task 목록을 공유한다면? 그런 경우를 생각했을때도 사실 실시간 동기화가 꼭 필요하지는 않다. 그렇지만 학습 목적으로 한번 시도해볼만 하다.
여러명이 작업중인 상황에서, 누군가가 새로운 Task를 추가하거나 위치를 이동할 경우 다른 사용자들의 Task 목록에서도 그 내역이 반영되도록 한다. 즉, 핵심은 서버->웹 브라우저로 무언가 푸시를 할 수 있냐는 것이다.
nginx 단에서 해야 할까?
todo.fakenerd.kr 로 도메인 이름이 그대로 뜬다.
적절한 이미지와 적절한 텍스트가 보이도록 수정해준다. 이게 혹시 그 얘기로만 듣던 favicon이라는 것일까?
GitHub의 Label을 본따서 만든다.
로그를 남겨서 사용 패턴을 분석한다. 단순한 기능을 제공하는 서비스이므로, 기능별 분류가 쉬울 것이다. 간단한 패턴들(예: N개의 Task가 완료될 동안, M번의 move가 발생)을 정리하고, 이를 통해 서버에서 생길 수 있는 트레이드-오프 중에서 어떤 선택을 내릴지 결정할 수 있을 것이다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.