Presentation of the cocovoit project

Demo : cocovoit.lab.kelbert.fr

I made this school project with Clément DUPLAND and Hugo DI GUARDIA during my international semester at UQAC.

The subject was to create a carpooling platform (like blablacar) using the framework of our choice, we decided to use the symfony framework that we had already used for a previous project.

To put the site online, I had to buy my first VPS in April 2019 and the site stayed online for 2 years on this solution. When I created my new infra, I promised myself to dockerize this project and to put cocovoit back online, hence this article 3 years later.

Cocovoit working

First of all, the driver indicates on his dashboard the journey he is about to make. As we cannot anticipate the duration of the breaks, the driver must enter the duration of the trip himself.

The last created trips are available on the /trip page. The travelers of the platform can see that Sarah, the driver in our example, has just proposed a trip between Montreal and Chicoutimi.

Tommy, our second user for this test, can therefore reserve a place for Sarah’s trip. Our business model, very generous, allows Tommy to travel for free.

Once the transaction is done, tommy sees his reservation appear on his dashboard, he can then cancel his reservation or display his ticket (a QR code).

On her side, the driver Sarah sees the reservation on her dashboard. Note that she can decide to cancel her trip.

Info
One of the rule of the assignment was to disable users canceling their trips too often. From 3 cancelled trips, the user is therefore blocked and invited to contact a manager.

At the moment of departure, the passenger presents the QR code available on his dashboard (button “Voir le ticket” (See the ticket)). The driver, with his phone, must scan it to see if his ticket is in order.

An operation close to the sanitary pass, but with 2 years earlier :)

Some technical details

The “restoration” of this site will have required the following steps:

  • switch from mysql to postgresql
  • upgrade to symfony 5
  • use environment variables in config files
  • writing a readme

For the deployment: