As part of an ongoing series, we will cover the interesting steps needed to build awesome visuals as part of the AthleteDataViz web application.
Download the project code on Github at https://github.com/ryanbaumann/athletedataviz
First, the architecture. Where are we going? We started by sketching out the functional requirements of the idea, and the potential tools we could use to implement the functions (on a whiteboard, of course!)
How can we break this list of functions and tools and make it something concrete?
First we look for "groupings" of functionality. Fetching Data, Storing Data, Analyzing Data, Visualizing data all require some web infrastructure, and a software platform to build on. Since this tool spans all of our functions (fetch, store, analyze...etc), we should look for a tool to help us manage the whole workflow if it exists.
Luckily the Platform as a Service (Paas) business has been booming, and there are a ton of options on where to host your app, database, and servers. The PaaS options we researched included Redhat's OpenShift, Heroku, DigitalOcean, and Amazon AWS Elastic Beanstalk. We spent significant time on OpenShift and Heroku in particular. In the end, Heroku won the PaaS battle due to it's excellent developer documentation, and relatively equivalent pricing to OpenShift. Digital Ocean and AWS Elastic Beanstalk were good options, but require more "sysadmin" time because those services mainly provide the server infrastructure, but not the tools to help manage the software built on top of the servers for you.
Next, we looked at the Fetch Data, Store Data, and Analyze Data functions. We needed a web framework that could handle the back end for all three of these functions. We choose Python with the Flask web framework because it can easily facilitate all three fetch, store, and especially analyze functions - also, it was the programming language our team had the most experience with.
Finally, Buy Product. To serve our customers with a great product, we need excellent partners who make images into amazing products like glass prints, metal prints, tshirts, and more. We also need services to handle purchases and a Point of Sale System. While we continue to research and evaluate business partners, we took a stab at finding well-established business who can meet our customers needs.
A bit of risk, a bit of luck, held together by a flexible but well-thought out plan - It's part of trying to change an idea into a business!
In part 2, we'll dive into some of the aspects of building the web application using Python, Flask, and Postgis.