PlanSanté.ca is an appointments management system made for health professionals. The mission of this website is to provide services to health professionals at a reduced cost.


This platform allows health professionals to reduce the workload behind managing appointments and helps them optimize their time.

The project started as a WordPress modification, but to allow more growth and easier code management, we decided to shift towards its own code base. The code was quite messy and the database structure was tied-into WordPress which wasn’t very elegant.

During the first few months, I optimized and re-worked parts of the WordPress code base and got comfortable working within the structure of the website.

After, we started working on a brand new platform. The goal was for us to have an API back-end written in PHP/MySQL and an AngularJS front-end that uses the API. Since we wanted to be able to keep the WordPress code base running while we created the new version, we had to keep supporting the current database structure and we couldn’t modify it without having to change the WordPress code. So we built multiple layers in order to restructure the data without having to change how it is stored, and eventually we will phase out the WordPress version of the site and convert the data using those conversion layers.

The first layer is a set of MySQL procedures that allows us to communicate to the database and have all the data associated with each objects. Then I built what I call the “Legacy layer” (or the ORM), which takes the data from the MySQL procedures and use them to build the objects (while doing some conversion work for certain data types). It also allows us to write the modifications done to each objects to the database.

The back-end is built on top of Cervo and uses a CRUD structure for calls. Those calls use the various tools-sets that I built and the “Legacy layer”.


Skills required

  • The platform is entirely built in PHP.
  • Cervo is the framework used for this project.
  • The front-end uses Javascript, HTML5, CSS3 and AngularJS.
  • Some tools are written in Node.js.
  • We use MySQL as database.
  • Automated API tests are written with Codeception.