Born'HeyHo - Trouver et réserver une borne électrique

Présentation du projet :

Ce projet est réalisé en groupe durant un concours de développement et mes durant études. Notre groupe a par ailleurs, été élu coup de cœur du jury.

Born’HeyHo est une application web et mobile qui a pour but de faciliter la recherche de bornes de recharge électriques. Devoir chercher partout pour trouver une borne et une fois qu’on l’a trouvé, il faut généralement attendre avant de pouvoir l’utiliser. De plus, nous n’avons pas toujours le moyen de savoir quand la recharge sera possible pour le prochain utilisateur. C’est à ce moment là qu’intervient Born’HeyHo. Il permet aux utilisateurs de trouver très simplement une borne et de pouvoir la réserver en quelques clics. Pour réserver une borne, l’utilisateur doit au préalable ajouter un véhicule dans son garage virtuel. Une fois réservée, la borne n’est accessible qu’à l’utilisateur l’ayant réservée, jusqu’à la fin de la charge choisie lors de la réservation.

Situation professionnelle :

J’ai la mission de réaliser un client mobile (application mobile) pour permettre la réservation de bornes. En effet, les utilisateurs via cette application mobile doivent pouvoir lister les bornes, les réserver et ajouter des véhicules dans leur garage virtuel. Pour que cette application mobile fonctionne, j’ai également réalisé une API qui permettra de récupérer, ajouter, modifier et supprimer des données provenant de la base de données de Born’HeyHo.

Objectifs :

  • Lister les bornes de recharge
  • Ajouter des véhicules
  • Supprimer un véhicule
  • Réserver une borne
  • Modifier une réservation
  • Annuler une réservation
  • Afficher les informations du compte

Application mobile

Langages et technologies utilisées :

  • AngularJS
  • Onsen UI
  • LocalForage

Exemple de code :

Ce code permet d’afficher la durée de recharge que l’utilisateur choisie jusqu’à 2 heures max. L’utilisateur déplace une range barre qui lui permet de définir la durée en minute. Donc ce code récupère la durée en minute puis la convertie en heure pour l’afficher en dessous de la barre.
// Show time in h:m if the value of book.during change
$scope.$watch('book.during', (newVal, oldVal) => {
    if (newVal == undefined) {
        $scope.viewDuring = ''
        return false
    }
    var hours = Math.floor(newVal / 60),
        minutes = newVal % 60;

    $scope.viewDuring = hours +'h '+ minutes +'min'
});

API RESTful

Langages et technologies utilisées :

  • Lightwork-API v2
  • PHP
  • SQL
  • Twig (pour la documentation)
  • JSON

Exemple de code :

Ce code, qui utilise le routeur que j’ai réalisé pour Lightwork-API v2, permet de définir les différentes routes de l’API. Dans cet exemple, il y a la liste des routes pour les réservations de bornes de recharge. La deuxième ligne est la création d’un groupe de route commençant par ‘/bookings’. Les routes en dessous sont des routes appartenant au groupe ‘/bookings’. Par exemple la deuxième route est en méthode GET, elle a pour endpoint ‘/bookings/:id’ dont l’id peut être uniquement un Integer. Cette route appelle la méthode getById() de la classe Booking.
// Booking group
$router->group('/bookings', function (Group $group) {

    // Get all bookings
    $group->add('GET', '', 'Booking#getAll', 'booking.getall');
    // Get booking by id
    $group->add('GET', '/:id', 'Booking#getById', 'booking.getbyid');
    // Get booking by account
    $group->add('GET', '/account', 'Booking#getByAccount', 'booking.getbyaccount');
    // Add a new booking
    $group->add('POST', '', 'Booking#add', 'booking.add');
    // Edit a booking by id
    $group->add('PUT', '/:id', 'Booking#edit', 'booking.edit');
    // Delete a booking by id
    $group->add('DELETE', '/:id', 'Booking#delete', 'booking.delete');

}, true, [
    'id' => '\d+'
]);

Compétences acquises​

  • A 1.1.1 : Analyse du cahier des charges d'un service à produire
  • A 1.2.2 : Rédaction des spécifications techniques de la solution retenue
  • A 1.4.1 : Participation à un projet
  • A 1.4.3 : Gestion des ressources
  • A 4.1.2 : Conception ou adaptation de l'interface utilisateur d'une solution applicative
  • A 4.1.7 : Développement, utilisation ou adaptation de composants logiciels
  • A 4.1.9 : Rédaction d'une documentation technique
  • A 4.2.4 : Mise à jour d'une documentation technique