Skip to content
This repository has been archived by the owner on Sep 6, 2021. It is now read-only.

Latest commit

 

History

History
executable file
·
153 lines (112 loc) · 7.25 KB

README.md

File metadata and controls

executable file
·
153 lines (112 loc) · 7.25 KB

Kanban

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.

Описание REST Endpoint

Роутинг по определенным точкам доступа для соответствующих обработчиков расположен в конфигурационном файле серверного приложения app/system/configuration.py

Структура ответа JSON

В процессе обработки каждого запроса серверной приложение рано или поздно возбудит исключение извещающее о завершении работы. Исключение может являтся запланированной обработкой ошибки, а в случае возникновения фатальной ошибки не предусмотренной в режиме нормальной работы приложение сгененирует исключение на основе имеющихся данных о произошедшей аварии. Так или иначе все исключения являются оберткой вокруг класса 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

Web server

Для работы приложения необходимо обеспечить доступ по домену (например www.kanban.local).

hosts
# Для доступа к клиентскому приложению, серверному приложению по REST API
127.0.0.1 www.kanban.local
nginx

Для работы доменов необходимо сконфигурировать веб сервер (например 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;
}

Backend

В качестве СУБД используется MongoDB (тестирование проводилось на версии 3.0.7). Настройка доступа к базе данных MongoDB, а так же роутинг приложения tornado можно настроить в app/system/configuration.py

Для MongoDB необходимо определеить базу данных - по умолчанию подключение будет идти на localhost:27017 в БД kanban

Frontend

Настройка доступа к клиентским билиотекам осуществлятся в главном индексном файле 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) и пройдите регистрацию. Если имя пользователя не занято то пользователь будет создан с указанным паролем.