canjs와 python flask를 이용한 다국어 어플리케이션 제작을 위한 토대입니다. Flask 부분은 Matt Wright님의 글에서 영감을 얻었습니다.
새 기능 개발시.
- develop 브랜치를 pull 한다.
- 새 브랜치 생성 : git branch <name_of_new_feature_branch>
- 개발중에는 새 기능 브랜치에 커밋한다.
- 기능을 완성했으면 테스트를 만들어 잘 동작하는지 시험한다.
- 잘 동작하면, 새로운 기능으로 인해 생길수 있는 버그를 다시 한번 잘 살펴보고 develop 브랜치에 통합한다.
- 새 기능 브랜치를 지운다.
치명적인 버그 hotfix 패치 개발시.
- test 브랜치를 pull 한다.
- 새 브랜치 생성 : git branch <name_of_hotfix_branch>
- 개발중에는 hotfix 브랜치에 커밋한다.
- 수정을 완료했으면 테스트를 만들어 잘 동작하는지 시험한다.
- 잘 동작하면, 새로운 수정으로 인해 생길수 있는 버그를 다시 한번 잘 살펴보고 develop 브랜치에 통합한다.
- test 브랜치에도 hotfix를 통합한다.
- hotfix 브랜치를 지운다.
- console.log(); 는 사용하지 않는다.
- utils.log(Trace|Debug|Info|Warn|Json|Object|Error)를 사용한다.
- 자바스크립트 로그(utils.log(Trace|Debug|Info|Warn|Json|Object|Error))를 사용할 때 내부에 '()'를 사용하면 안된다. 만약 그렇지 않으면, 배포시 오류가 발생한다.
- 예)utils.logDebug('initEdit', upload_image);
- 틀린예) utils.logDebug('initEdit', something_wrong());
- Flask/Canjs 연동.
- 다국어 지원.
- 사용자 CRUD 구현.
- 사용자 following/followers 기능 구현.
- 소셜 네트워크 연결 구현.
- 페이스북
- 기타 (TODO)
- RESTful API 구현.
- 반응형 웹 디자인.
- 구글 크롤러 친화적 url('#!').
- 간편한 개발 문서 제작.(Sphinx)
- 쉬운 테스팅. (nosetests)
- 다양한 브라우저 호환 (IE7, IE8, IE9, IE10, Firefox, Chrome, Opera..)
- 더 많은 기능을 윈하신다면, 함께 만들어 가요! :D
- Canjs, 클라이언트 사이드 자바스크립트 프레임워크.
- RequireJS, 자바스크립트 파일•모듈 로더.
- RequireJS Optimizer, RequireJS 최적화 도구.
- Initializr, HTML5 템플릿.
- Bootstrap, 프론트엔드 프레임워크.
- Bootstrap-ie7, 부트스트랩 3에서 IE7을 지원을 도움.
- mustache, 템플릿 엔진.
- i18next, 자바스크립트 다국어 도구.
- Font Awesome, 크기 변환등 개별화 가능한 백터 아이콘 모음을 제공.
- typeahead.js, 텍스트 자동 완성 라이브러리.
- spin.js, 작업중 활동 표시기.
- Placeholders.js, 자바스크립트를 통해 HTML5의 placeholder 속성을 사용 할 수 있게 함.
- Jade(pyjade), 파이썬용 Jade 템플릿 엔진 확장.
- jQuery, 작고 빠르고 유용한 자바스크립트 라이브러리.
- jQuery BBQ, HTML5 hashchange 이벤트 사용을 도와줌.
- Grunt, 자바스크립트 작업 실행기.
- Can-Compile, CanJS 뷰를 하나의 자바스크립트 파일로 컴파일 함.
- grunt-shell, 외부 CLI 도구를 Grunt에서 쓰도록 도와줌.
- grunt-contrib-watch, 파일이 추가되거나, 변경되거나 삭제되면 그것을 감시하여 작업을 실행.
- grunt-uncss, 사용하지 않는 CSS를 제거해줌.
- time-grunt, Grunt 작업의 소요시간을 보여줌.
- Flask, 가벼운 파이썬 프레임워크.
- Flask-Babel, 플라스크용 다국어 확장.
- Flask-Gravatar, 플라스크용 그라바타 확장.
- Flask-Security, 플라스크용 로그인 보안 확장.
- Flask-Social, Flask-Security에서 Oauth를 지원하는 확장.
- Flask-Assets, 자바스크립트와 스타일시트를 관리하는 플라스크용 확장.
- Flask-SQLAlchemy, SQLAlchemy사용을 위한 플라스크용 확장.
- Flask-WTF, WTForms 통합 확장.
- Flask-Cache, 캐쉬 사용을 도와주는 플라스크용 확장.
- Alembic, SQLAlchemy 데이터베이스 마이그레이션 관리 도구.
- Celery, 분산 메시지 전달 기반의 비동기 작업 queue/job 큐.
-
Docker 설치.
-
Docker Hub에서 이미지 설치.
docker pull dorajistyle/flask-canjs-i18n-boilerplate
-
Docker 이미지 실행.
$ docker run -d -p 5544:5000 dorajistyle/flask-canjs-i18n-boilerplate
-
127.0.0.1:5544 를 웹 브라우저 주소창에 입력.
- virtualenv, 분리된 파이썬 환경을 만들어줍니다.
- virtualenvwrapper, virtualenv를 보다 편리하게 사용하도록 돕습니다.
$ git clone https://github.com/dorajistyle/flask-canjs-i18n-boilerplate.git
$ cd flask-canjs-i18n-boilerplate.git
$ mkvirtualenv flask-canjs-i18n-boilerplate
$ pip install -r requirements.txt
$ alembic revision --autogenerate -m "Alembic initilized boilerplate tables."
$ alembic upgrade head
'[email protected]'와 'password'로 로그인 하시면 됩니다.
$ python manage.py init_user
설정 값을 올바르게 설정해야 합니다.(데이터베이스, 메일, 소셜 네트워크 정보...)
- application/settings.py엔 서버 사이드 설정이 들어 있습니다.
- application/frontend/static/js/settings.js엔 클라이언트 사이드 설정이 들어 있습니다.
- ./alembic.ini엔 alembic설정이 들어있습니다.
- 서버 사이드 번역(Babel)은 applications/frontend/translations 폴더에 있습니다.
- 클라이언트 사이드 번역(i18next)은 applications/frontend/static/locales 폴더에 있습니다.
$ python tr_compile.py
$ python wsgi.py
$ python generate_documents.py
Nodejs 와 RequireJS가 설치되어 있어야 합니다. 더 자세한 문서를 원하신다면 다음을 클릭하세요. RequireJS Optimizer.
$ optimize_static.sh
$ python update_platform.py
$ python run_nosetests.py
$ python refresh_database.py
nodeJS npm 과 grunt를 먼저 설치한다.
$ npm install -g grunt-cli
그리고 ./application/frontend/views 디렉토리에 필요한 npm 모듈을 설치한다.
$ npm install can-compile --save-dev
$ npm install grunt-shell --save-dev
$ npm install grunt-contrib-watch --save-dev
$ npm install time-grunt --save-dev
혹은 아래 스크립트를 실행하여 설치한다.
$ python install_node_modules.py
마지막으로 아래 명령어를 실행한다.
$ python refresh_static.py
mustache의 변경사항을 감시하다가 자동으로 변경사항을 적용하려면 아래 명령어를 실행한다.
$ python watch_static.py
Flask-canjs-i18n-boilerplate는 MIT license를 따릅니다.