Platform Selection

Deployment Service Selection:

We have chosen to deploy our application using UNC’s Carolina Cloud Apps service. Carolina Cloud Apps is built on top of Red Hat’s Open Shift and works similarly to it. The application lives in an environment known as a gear that contains multiple cartridges which provide languages and services for the application. The main reason we decided to use this service is because the project is already deployed there — we know the existing code works and we don’t want to worry about unexpected behavior from switching services. Other benefits include: it is free, and the CCA staff work nearby so they can help us in person with the deployment. Similar services like Heroku or Google’s App Engine, while available for free, heavily limit the resources available to the application.

Database Selection:

CloudApps allows for the use of SQL style database such as MySQL or NoSQL alternatives such as MongoDB. We have chosen to use the MySQL cartridge to manage the database for our application.

Our choice: MySQL


  • Team Members were already familiar with SQL Databases/Queries
  • Existing Database from previous team already had an existing SQL Database
  • The survey data that will be input lends itself well to the relational model


  • Some of the visualizations will require a SQL Query that could be a fairly expensive join if not optimized properly

Alternative choice: MongoDB


  • No expensive joins
  • Entries can have a variable number of fields, which could be useful in flagging certain entries.


  • Would require recreating the existing database
  • No team members have experience with MongoDB, would require a steeper learning curve

Platform Selection:


CloudApps provides a number of different cartridge options, including PHP,  Ruby, and Node.js. We chose to use the PHP 5.4 cartridge for our project.


  • Team members were already familiar with writing PHP code
  • Existing code from previous team was written in PHP


  • Writing maintainable PHP code can be difficult/tedious
Mobile App

We have chosen to build our mobile apps using Cordova, which is a set of apis that allows for development of  cross-platform mobile apps from a single codebase. Alternatives included writing apps for each platform natively and other cross-platform development tools such as PhoneGap and Qt.


  • Cordova is free to use and open-source.
  • The app can be written for multiple platforms from a single codebase.
  • Team members are already familiar with HTML, CSS, Javascript, which are used to develop apps with Cordova


  • Performance on individual platforms may be slower compared to native apps

Server Selection

We will be using the servers provided by Carolina CloudApps. Our code will be tested in a development environment on these servers and ultimately deployed in a production environment.
The code for the mobile app will be maintained on GitHub.

Development Environment

We have set up a Development Gear in our project space through CloudApps.  Using Git, all changes will pushed to the Development Gear and changes will be reflected immediately on it.  By using a live development environment that is an exact copy of the real production environment, we can minimize any compatibility issues that might arise between the two environments.  This also allows for all team members to keep their source code in sync relatively easily.

The changes shown in the Development Gear will be pushed to the Production Gear only when the application has been sufficiently tested.

The team will be using Sublime Text v2.0.2 to make any changes to the files for the Application.