Skip to content
프로그래머스 윈터코딩 개발과제로 제출한 Todo Example
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.vscode
frontend
images
scenario
todolist Add support for simplejwt & drf permissions Feb 19, 2019
todoquest
.gitignore
.gitmodules
Pipfile
Pipfile.lock
Procfile
README.md
manage.py
requirements.txt

README.md

TODO QUEST

  • UI 관련 메뉴얼은 여기 참고해주세요

Environment

  • Backend
    • Python 3.6
    • Django 2.1
    • Pipenv
    • MongoDB
  • Frontend
    • React 16.6

Installation

Ubuntu 기준으로 작성한 메뉴얼입니다.

Installing Django

  1. Pyenv 설치에 필요한 빌드 패키지들을 설치한다.
$ sudo apt-get install build-essential ncurses-dev libncurses5-dev gettext autoconf cmake automake libevent-dev zlib1g-dev libbz2-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev pkg-config
  1. Pyenv를 설치한다.
$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
  1. Pyenv 관련 환경설정을 해주고, 쉘을 다시 킨다.
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$  echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL"
  1. Python 3.6을 설치한다.
$ pyenv install 3.6
$ pyenv global 3.6
  1. Pipenv를 설치한다.
$ curl https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python
  1. 프로젝트의 디렉토리로 이동 후 Pipenv를 이용하여 가상환경 셀을 킨다.
$ cd $PROJECT_DIR
$ pipenv shell
  1. 가상환경에서 의존성 패키지들을 설치한다.
$ pipenv install

installing Mongo DB

  1. Mongo DB 를 설치한다.
$ apt-get install mongodb-clients mongodb-server
$ mongo --version
MongoDB shell version: 2.4.9
$ mongod --version
db version v2.4.9
Mon Dec 21 09:54:19.148 git version: nogitversion
  1. Mongo DB 서비스를 시작한다.
$ etc/init.d/mongodb status
 * Checking status of database mongodb                                              [fail]
$ etc/init.d/mongodb start
 * Starting database mongodb                                                        [ OK ]

Executing Appication

  1. 서버를 시작하기 전에 DB 초기화를 위해 마이그레이션을 한다.
$ python manage.py migrate
  1. 실행에 필요한 모든 패키지도 설치했고, MongoDB도 설정완료했으니, 서버를 시작한다.
$ python manage.py runserver

Requirements

  • 새로운 TODO(제목 + 내용)를 작성한다
    • POST /api/todo/
  • 사용자의 선택에 의해 TODO에는 마감 기한을 넣을 수 있다.
    • POST /api/todo/
  • 우선순위를 조절할 수 있다.
    • POST /api/todo/
    • PUT /api/todo/:id
  • 완료 처리를 할 수 있다.(혹은 미완료처리)
    • PUT /api/todo/:id
    • PUT /api/todo/:id/complete
    • PUT /api/todo/:id/incomplete
  • 마감기한이 지난 TODO에 대해 알림을 노출한다.
    • 알림은 매 시간 10분마다 생성되며, 외부 프로세스에서의 HTTP GET 요청을 처리할때만 알림이 생성된다.
      • 프로덕션 환경에서는 crontab에 10 * * * * curl -X GET /api/scheduled_job task를 추가하였다.
    • GET /api/notifications
  • TODO 목록을 볼 수 있다.
    • GET /api/todo/
  • TODO 내용을 수정할 수 있다.
    • PUT /api/todo/:id
  • TODO 항목을 삭제할 수 있다.
    • DELETE /api/todo/:id

Additional Feature

  • 할 일에 대해 메모를 남길 수 있는 댓글 기능
  • 할 일에 대한 분류 기능
  • 표시되는 순서의 전환

Reference

You can’t perform that action at this time.