During our time at DATACOM we will be working on a genuine commercial project.  There are obviously commercial issues at stake and so sometimes in the course of this blog I won’t be able to delve into great detail.

In this post I hope to cover the history and expected outcomes of the project and outline some of the technology that we will use.


We will be working on a ‘Greenfield’ project for a rental vehicle company.  The company has an existing system that we will study, replicate and improve where necessary.  We will be building a web based customer booking portal and a company administration application.


The rental company has over a number of years, with the help of a lone developer created a web based system that allows customers to place bookings and administer their vehicles.  The existing system has somewhat ‘evolved’ with the company and is surprisingly complex, as is often the case with mature systems.

However, the code-base has been created in PHP/MySQL with a mix of different frameworks including WordPress.  The development has been undertaken on an ‘ad-hoc’ basis, so there has been little planning and even less documentation, It is classic kiwi ‘spaghetti code’.

For reasons unknown to me the current developer of the site has decided to no longer support development.  At this point the company approached DATACOM to further develop the system. Initial examination of the code base led the Nelson Dev team to recommend a full re-work of the site using an Object Oriented Approach and modern technologies


The Greenfield development application will be created using a variety of technologies.

The Customer/Administrator interfaces will be coded using the AngularJS framework, this allows for single page web applications, as opposed to traditional web pages. Generally offering a smoother user experience that could be likened to a phone app.

Database operations will be handled by a Postgres Database that will be accessed through a Python ‘Flask’ server.  Flask is a Python microframework that allows quick and extremely implementation of a Database API layer.

The Flask server will not be serving up our HTML/Javascript, that will be handled by a good reliable old Apache Server.  The flask server will however be accessed through the Apache server using a ‘reverse proxy’ method.  There are various security advantages to this approach, I will talk about it in more detail in a later blog post.

As we will be working with a number of technologies that are relatively cutting edge, a decision has been made to run server applications (flask and Apache) inside DOCKER containers, this gives the team the ability to reconstruct the servers quickly and easily if required.

Docker is a really exciting technology that we have touched up in some of our Networking classes and although we probably won’t have much contact with this side of the project, I’m hoping that I will gain a better understanding of how Docker is used in the real world.  I hope to write a blog post about Docker at some point in the project

The Team

The team is headed up by Chris, he’s been coding for about 16 years, he’s got a wide experience and seems to know OO concepts inside out.  Chris is based in Nelson.

Project lead if Lee, he is actually based in the UK, although there is a scheduled visit of 3 weeks in pencilled in for August.  Working with a UK based developer adds an extra dimension to the project, meaning that we have to really rely on Github and good communication.

The 3 stooges.  John, Fleur and myself have come in from NMIT to see how we cope on a really project.  Time will tell.



Detailed Project Outline 2hr

Angular Tutorial 12hr (14)

Restful API Tutorial 3hr (17)

Flask Restless API Tutorial

NGINX Setup with virtual disks and reverse proxy 6hr (23)

building desks 3hr (26)

Trouble shooting NGINX Conf file 2hr (28)