Company: Tekanero Client Adler and Allan
Main development:  06.2015  - 09.2015 
Type Web Application
Technologies PHP SQL SQL Server jQuery Bootstrap




In early 2015 my business-partner Ashley has gotten in touch with Adler and Allan to provide some assistance with a tank-monitoring system that they had in place at the time.

The system was based on a .Net Desktop application which communicated with “Read-Out” controllers via SMS. The whole application was operated via a closed source windows application which stored its data in a MS SQL Server database. A major weakness of the existing program was its user interface which overloaded its operators with information and options; this caused the operators to feel uncomfortable using the software. The biggest short-falls were the lacks of scheduling, data prediction and error handling in case a sensor failed to provide data a couple of days. Their solution at the time was to manually type the last known values into an Excel sheet on a weekly basis in order to do their schedule tankers, a solution that was time consuming and prone to error.


The solution

After lengthy discussions with the client and Ashley who coordinated the project, an independent web application that hooks into the systems database has been identified as the best solution. The main goal was to remove the need for an Excel spread sheet to schedule tankers and to provide operators with a dashboard that will give them the information they need whilst removing their usage anxiety. We achieved this by segmenting the application into clearly defined modules on the daily tasks at hand.

Interactive elements:

To further improve usage efficiency interactive elements were added throughout the site which include:
  • Add, modify, delete tanker bookings across the site
  • change tank or site details in tank summary
  • semi-automatically calibrate the tank-flowrate using a graph in the tank summary
  • jQuery date-picker wherever dates are used
  • JavaScript data-validation in all text-fields
  • jQuery transitions for a friendlier appearance


A major advantage over the original software came in form of data prediction. This feature has been used extensively to forecast fill levels of various tank types (fuel tank, sewage tank etc.). It’s main function was to help with scheduling tankers but also to give an approximate fill level if contact with a sensor/base station had been lost.
Another important addition was the ability to schedule tankers and print out a weekly roster which completely eliminated the reliance on Excel.
Developing a web-application also has had further advantages over a traditional Windows program as it offers access to multiple operators simultaneously.
A future aspect came in the use of a responsive user interface relying on Bootstrap 3 which would make this software accessible on mobile devices such as tablets and smart phones. The idea behind this was for operators to use the system while out on site.

Responsive Design

Responsive design


Interactive Dashboard

Homepage-Dashboard, showing: 
   * Tanks requiring attention:
      o If tanker service needed, making use of the forecast algorithm.
      o If contact lost or persistent errors on read-out.
      o Function to book tankers/servicing directly.
   * Upcoming bookings which can be modified and deleted.
   * Function to print this weeks booking schedule

Weekly Schedule

Weekly Schedule Print function

Data chart & flowrate calibration

Historical data display with following features:
* Interactive display (live scroll and zoom withouth page reload).
* Assisted Flowrate calibration based on displayed data
  o Flowrate is used to calculate tank-fill prediction.
  o Manual override to refine calibration.
* Advanced options menu and calibration extends out via jQuery


Challenges and technical details

The clients’ main requirement was to develop the system to run on a separate, though straight forward LAMP server and to keep any impact on the existing system to a minimum. This meant that we had to store our own information in a separate database which in turn rendered the whole setup incompatible with most PHP frameworks such as Symfony. To speed up development, provide a cleaner solution and I adhered to many philosophies of Symfony 2 and Joomla. By further following best practices as well as good code documentation, Ashley could contribute his parts in the project without the need for a prolonged induction. This will certainly come into its own during future updates.

Examples :

  • Clearly defined class names for own libraries
  • Clearly defined file structure
    • TK_ start for Tekanero classes
    • TK_H_ start for page related helpers
  • Use of Bootstrap colours for clean design
  • Page split into chunks for template
  • End of page exception handling
  • Notification function to display uniform messages
  • Clearly defined class names for own libraries
  • Database handler
    • automatic connection handling
    • integrated error handling, forwarding to error page
    • functions for: SQL statements and standard SQL queries and single row queries
  • Pre-defined data retrieval functions in separate class

Page template

Source code of template

Notification display

Pre-defined Notification are added via a static function. 
This allows their addition at any point in the PHP file. 
Their style was taken from the Bootstrap template.
A jquery animation closes the notification if x is clicked.

Error handling

Error Handling:
 * Errors get caught at the end of each page (include file) and logged. 
 * The error message is then stored in a session variable with an ID (see address line).
 * Once processed, the site will redirect to the error page.
 * Operators then have the option to see the error message by clicking on 'Show Message'