HelpOnClick

Chat with clients website visitors to increase their sales. The product development and technical support by ExtPoint company (where I work now).

Clients set up live chat on their websites. Then client operators can talk with website visitors from PC, tablet or mobile phone. Operator panel have a rich features such as chat, chat history, statistics, visitors online monitor, auto invitations, virtual agents and highly customizations…

Role in project
Senior Web Developer
Time in project
From 2013 year
Statistics
~ 20 000 active accounts
More 3 000 online users
Promo site
helponclick.com

My contribution

Refactoring

I start work in this project when it already has high load and large code base. Almost all server code (PHP) has be placed in one controller (god object) — more 10 000 code lines! Therefore a lot of time has been spent to decrease code relations, increase code safety, reliability and move to new technologies.
Frontend (ExtJS, jQuery, Backbone) also has been changed: MVC pattern implementation, removing code duplications and adapting it to current business logic.

Move to Node.js + Redis.

Project periodically rested to its capacity, because comet transport pinged every few seconds PHP servers to update dynamic data what were inefficient. Initially I developed this part using Node.js platform and then moved whole project Node.js afterwards. Data transport can be changed to websocket/long pooling (abstraction for sockjs and socket.io libs) now.

Unit tests

Before my contribution project did not have tests. When I have been moving main functionality to Node.js, the unit tests (NUnit) have been involved to cover basic application scenarios.

Continuous integration (automatic deploy)

Project is placed on many servers and also have staging, preview and beta environments. For easy and fast application deployment with ability to roll back to previous versions the bash scripts have been developed be me. They are used within Jenkins CI jobs.
Automatic deploy process includes application building, unit tests running, uploading to environment servers, switching to new version and checking that application is available by http.
Preview and Staging versions updated by commit hook in main git branch.

Technologies

Server
PHP, Node.js, MySQL, Redis, Sphinx
Operator/Admin panel
ExtJS
Embeddable widget
jQuery, Underscore, Backbone, RIA Builder
Mobile/Tablet version
PhoneGap (Apache Cordova), Sencha Touch
Desktop version
Qt (WebView)

Screens

Opened chat in operator panel, widget and popup window.

Embeddable widget on client site.

Operator panel with opened chat on left panel. On the right panel you can see auto invitation settings, which triggered by rules.

The Virtual Agent is an automated system that provides replies to customers’ inquiries based on the used keywords.