I was also interested in the same question, and decide to share my project and research so far.
I built a Futures Trading back tester in python, which eventually will support live/paper trading. Here's rough sketch of the design:
-------------- -------------- ------------
| MarketData | ---> | Backtester | --> | Results |
| (MongoDB) | | (Engine) | | (MongoDb |
-------------- -------------- ------------
^
|
---------------
| Algoritms |
---------------
The market data is drip-fed into the Backtester's engine, which processes it against the input algorithms to decide if it wants to take a trade. All the results (i.e. trade log, trade statistics, etc...) are output back into the MongoDB.
Front End Requirements
Next, my goal is to build a front end. I want the front end to allow a user to setup backtests. i.e. Input parameters for the backtest such as start/end time, algorithm, starting cash, etc.., buttons to start/stop/halt trading, etc... Once the backtest starts, I want the user to see the backtest trading happen real-time on the charts. They should be able to setup multiple charts, i.e. 5-min candlesticks, 1hr, daily, etc... I also want to the stats to update live as the backtest runs, including an equity curve chart. Quantopian has something similar (see quantopian.com) although I want to build this ground up for various reasons.
Front End / Client-side Frameworks
It seems to me that a front-end framework, such as AngularJS or ReactJS, would be useful here to allow for an interactive experience that I'm trying to create. I'm leaning towards ReactJS mostly because I found this awesome stock charts project: http://rrag.github.io/react-stockcharts/.
There's other projects such as Plotly's Dash (which is built on top of ReactJS, Plotly.js, and D3). But I'm finding that Plotly's charts are a bit rigid, i.e. y-axis doesn't adjust on a chart as you zoom, and don't support all of the same out-of-box chart features as does react-stockcharts. There's also Plotly's Dash. Although I'm finding it difficult to integrate Dash into an existing Web App (see some of the discussion in their forums on this topic). But Dash does allow you do have live (interval) updates to the charts. Its fairly new, so it has potential in the future. But I'm leaning towards ReactJS and react-stockcharts.
I also considered going with Grafana, which is an out-of-the-box front end mainly for monitoring and alerting applications (think IT admin wants to monitor CPU, Mem, etc.., for several servers in their lab). They have a limited support for a few input data sources, i.e. InfluxDB, MySQL, Elasticsearch, Graphite, etc... It seems like InfluxDB is a preferred database to use, probably because I think its developed by the same people that built Grafana (they deliver these into a complete solution called InfluxData). There are other plug-ins for MongoDB, candlestick charting, and plotly. But it feels difficult trying to integrate and use all of these plugins to get the same experience as react-stockcharts. And in the end, this application doesn't feel right for a stock charting or backtesting web app.
Service-side Frameworks
I'm still not completely certain if I need a service-side framework. Although I'm considering to use Node.js. Node.js apparently also acts as a Web Server. But what attracts me to Node.js is the fact that it support async jobs. So when the user submits backtest jobs, these jobs can be submitted via Node.js into the backend (MongoDB). And likewise, it can wait and feed back the trade results to the client. It doesn't connect/disconnect frequently like traditional Web Server HTTP requests. The connection stays active and does work asynchronously. (I'm a newbie to all of this, so anyone can correct me if I'm wrong about any of this).
Flask is also worth checking out. Since my backend is python, it might be easier to integrate and even eliminate having to go through a database.
Lastly, I found there's these free open source web stacks.
1. MEAN (MongoDB, ExpressJS, AngularJS, NodeJS)
Here's their website:
http://mean.io/
Also, you can get this up and running pretty quick with Docker Compose:
https://hub.docker.com/r/meanjs/mean/
2. MERN (MongoDB, ExpressJS, ReactJS, NodeJS)
Here's their website:
http://mern.io/
Also, you can get this up and running pretty quick with Docker Compose:
https://github.com/Hashnode/mern-starter
And some interesting discussion on Mongo's website about these:
https://www.mongodb.com/blog/post/the-modern-application-stack-part-1-introducing-the-mean-stack