This Stock Price Milestone project is intended to help me tie together some important concepts including Git, Flask, JSON, Pandas, Requests, Heroku, and Bokeh for visualization.
The repository contains a basic template for a Flask configuration that will work on Heroku.
My finished example that demonstrates some basic functionality.
- 
Git clone the existing template repository. 
- 
Procfile,requirements.txt,conda-requirements.txt, andruntime.txtcontain some default settings.
- 
There is some boilerplate HTML in templates/
- 
Create Heroku application with heroku create <app_name>or leave blank to auto-generate a name.
- 
(Suggested) Use the conda buildpack. If you choose not to, put all requirements into requirements.txtheroku config:add BUILDPACK_URL=https://github.com/thedataincubator/conda-buildpack.git#py3The advantages of conda include easier virtual environment management and fast package installation from binaries (as compared to the compilation that pip-installed packages sometimes require). One disadvantage is that binaries take up a lot of memory, and the slug pushed to Heroku is limited to 300 MB. Another note is that the conda buildpack is being deprecated in favor of a Docker solution (see docker branch of this repo for an example). 
- 
Deploy to Heroku: git push heroku master
- 
You should be able to see your site at https://<app_name>.herokuapp.com
- 
A useful reference is the Heroku quickstart guide. 
- Use the requestslibrary to grab some data from a public API. This will often be in JSON format, in which casesimplejsonwill be useful.
- Build in some interactivity by having the user submit a form which determines which data is requested.
- Create a pandasdataframe with the data.
- Create a Bokeh plot from the dataframe.
- Consult the Bokeh documentation and examples.
- Make the plot visible on your website through embedded HTML or other methods - this is where Flask comes in to manage the interactivity and display the desired content.
- Some good references for Flask: This article, especially the links in "Starting off", and this tutorial.