Skip to content

Application Architecture

Architecture Diagram



We (Team I) are given data curated by the client to avoid privacy concerns.

A python script is used to normalize the datasets into csv format.

Normalized datasets are imported into Tableau.

Design visualization in Tableau, which is running on the Tableau server.


Browser accesses the WordPress site.

The WordPress site makes HTTP requests to the Tableau server.

The Tableau server makes queries on the normalized datasets and displays result.

Application Architecture

Our dashboard utilizes a “single pane of glass” integration architecture. It consists of three individual stages–curate data, presentation design and implementation (development), and runtime stage, which is a standard 3-tier web service architecture.


A potential future version of this product could eliminate the development stage; instead, dynamic queries might be directly on the original databases as the data source for the tableau visualization. However, this future version is out-of-scope for the current project.

Development Architecture

Python – Normalize datasets


In order to process data into the ideal format for dashboard creation, we use Python to normalize data.


In order to compute summary statistics using the dashboard across different datasets, we have to combine and process the datasets properly.


Our client provided a total of five datasets that each contains exclusive information. In order to use the dashboard to display summary statistics based on all datasets, we have to merge the datasets properly by using the overlapping variables, which in our case, are geographic locations such as county, state, and country.

Python with free packages such as pandas and numpy emerge as an efficient tool to process data that meet our needs. While we could also use R, we were more comfortable using Python within Jupyter Notebook that allows us to see the results easily from each step. Furthermore, the presentation of the Jupyter Notebook page allows a clearer view of code, comments, and results that might ease future users’ process of understanding the Python script.

Tableau – Interactive data visualization software


In order to visualize data, we choose to use Tableau.


Currently, our client has many interesting maps and datasets on its website; however, these maps are scattered on different webpages, and thus, difficult for users to navigate through. The goal of this project is to develop a dashboard that provides comprehensive and fascinating visualization for these datasets given by the client. Moreover, this data visualization software has to be able to integrate with the UNC WordPress website management system. 


This data visualization software has to work with excel spreadsheet as datasource.

This data visualization software has to be able to integrate with UNC WordPress.


Power Bi, Grafana, D3.js, etc.


From the vast amount of good options of visualization software, the most influential reason we pick Tableau is that our client implies preference on Tableau over other data visualization softwares. Since eventually one of our goals might be teaching our client how to use this software, Tableau is a good option because it fits the client the most. Another reason is that comparing Tableau with some of the other softwares, it has a free student license to use. 

Runtime Architecture

WordPress – Content management system


In order to manage and deploy website content, we are required by our client to use UNC WordPress.


The goal of this project is to develop a dashboard that provides visualization for datasets given by the client, and most importantly, is able to integrate with the UNC WordPress website management system.


The constraint for the website content management system is very simple and straightforward — it has to be the UNC WordPress, because our client, UNC Gillings School, has built its website on UNC WordPress already. This is a requirement specifically listed by our client, so there is no point to evaluate other solutions.