I've been trying to build my own data analytics platform with the following features/workflow -
backend to generate/retrieve data from external systems (for eg. time series data using mqtt, websockets)
Tabbed Web application to -
A. Define workflows visually (i.e interactive directed graph/flowchart) I would like to have an area on the screen where the user can see a selection of shapes (eg. rectangle) (i.e the transforms) join the shapes together to create a chain transforms that is to be run on the data
B. show results of transforms (also other charts from the original data) in a grid layout (i.e an interactive dashboard
I am new to most of this stuff, although I have worked on Django for my earlier projects. This time I would like to have an async, non-blocking architecture.
I have built my system up to a place where the MQTT based pub/sub system is complete, & the backend can send data if a request is placed for it
Here's my problem/confusion -
I have read up on the tornado docs, bokeh docs, examples (eg. the server_embed example) and also many many posts/questions/articles on how to go about doing this stuff
When i attempt to find a solution without using javascript, I have not come across any simple method/example of creating things like a good responsive grid layout, interactive flowchart or visual editor etc. etc. with pure python. Python seems to be best with the other stuff I need for my app, eg. pandas, numpy, blaze, odo, scikit, tornado.
However, whenever I look at javascript there is this huge universe of nice & beautifull stuff like jquery, JointJS, AngularJS & what-not that just seems so cool & easy to use
Plus I read an answer somewhere (quora?) on Jinja2 vs. AngularJS, which was along the lines of "You should not mix both because Jinja2=server side HTML generation vs. AngularJS=browser side HTML generation, which don't mix well)
All of this has led me deeper into confusion, because I'm new to most of this
So my questions are -
What is an architecturally correct pattern, example or some reference(s) on using
a. tornado for the server/webserver
b. Use bokeh for interactive charts for the original/transformed data
c. Use some nice CSS (or maybe SASS?)
d. Use some existing HTML5 framework such as Foundation for the layouts * responsive grids
e. Use something like JointJS in the same browser page somewhere to join blocks together to define the transforms
If I use javascript, vs. I don't, what does this architecturally mean for the tornado templating system
Can I, or should I use Jinja2 in this mix (i saw an example that explains how integration with Jinja2 is a better option for templating on tornado)