Kanban - форк от Chimera - демо пример реализации Kanban доски.
- клиент написан на JavaScript и фреймворке Angular;
- сервер написан на языке Python и фреймворке Tornado;
- для хранения данных используется MongoDB;
Проект структурно состоит из 2х частей - клиентской и серверной. Клиентские скрипты, шаблоны и стили размещены в публичной части системы, доступ к ним должен обеспечить веб сервер (nginx). Серверная часть заключена в виде монолитного приложения на python, доступ к которому осуществляется посредством REST API.
app - серверное приложение на python/tornado (backend)
│
├─ documents - MongoDB document-model
├─ handlers - Tornado handlers
└─ system - Chimera system files
└─ utils - System modules
www - файловое хранилище скриптов клиентской части chimera
│
├─ resources - jquery/bootstrap/underscore/...
└─ system - Client-side
Фрейморк tornado обеспечивает возможность получения информации по методам http запросов таким как: get, post, put, delete, head, options, patch. Результатом работы приложения будет ответ в формате JSON.
Роутинг по определенным точкам доступа для соответствующих обработчиков расположен в конфигурационном
файле серверного приложения app/system/configuration.py
В процессе обработки каждого запроса серверной приложение рано или поздно возбудит исключение извещающее о завершении работы. Исключение может являтся запланированной обработкой ошибки, а в случае возникновения фатальной ошибки не предусмотренной в режиме нормальной работы приложение сгененирует исключение на основе имеющихся данных о произошедшей аварии. Так или иначе все исключения являются оберткой вокруг класса ResultMessage, который возвращает одинаковую структуру данных на каждый запрос.
подробнее см. app/system/utils/result.py
{
"error": {
"message": "error_message",
"code": "error_code"
},
"content": {},
}
- error - блок информации об ошибке;
- error.message - Текстовое сообщение об ошибке (по умолчанию "");
- error.code - Условный код ошибки (по умолчанию 0);
- content - блок корректного ответа на запрос произвольной структуры (по умолчанию {});
Python 3.5 см. requirements.txt
Для работы приложения необходимо обеспечить доступ по домену (например www.kanban.local).
# Для доступа к клиентскому приложению, серверному приложению по REST API
127.0.0.1 www.kanban.local
Для работы доменов необходимо сконфигурировать веб сервер (например nginx). Пример конфигурации для nginx
# public
server {
listen 80;
charset utf-8;
root /path/to/kanban/www;
server_name www.kanban.local;
index index.html;
client_max_body_size 5M;
location / {
try_files $uri /index.html;
}
location ~ \.(js|css|ico|htm|html|json)$ {
try_files $uri =404;
}
location /_/ {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://backend_kanban;
}
}
# api
upstream backend_kanban {
server 127.0.0.1:8888;
}
В качестве СУБД используется MongoDB (тестирование проводилось на версии 3.0.7). Настройка доступа к базе данных MongoDB, а так же роутинг приложения tornado можно настроить в app/system/configuration.py
Для MongoDB необходимо определеить базу данных - по умолчанию подключение будет идти на localhost:27017 в БД kanban
Настройка доступа к клиентским билиотекам осуществлятся в главном индексном файле www/public/index.html
в большинстве внешние библиотеки подключаются через сторонние CDN а внутренние библиотеки системы имеют относительные пути.
Настроить доступ клиента к серверу можно главном модуле клиентского приложения angular www/public/system/app.js
в нем необходимо удостовериться что параметры
baseUrl: "http://www.kanban.local/_",
baseWWWUrl: "http://www.kanban.local"
сконфигурированы в соответсвии с настройками веб сервера.
- baseUrl - базовый урл для API приложения
- baseWWWUrl - базовый урл для клиентских ресурсов приложения
В системе реализован базовый функционал по созданию досок, списков карточек, задач. Имеется возможность перетаскивать задачи посредство jQuery UI плагина sortable, а так же добавлять пользователей к управлению доской. Вопросы безопасности оставлены за пределами данной реализации.
После установки системы запустите приложение python app/main.py
и перейдите по адресу (по умолчанию www.kanban.local) и пройдите регистрацию.
Если имя пользователя не занято то пользователь будет создан с указанным паролем.