MyBus

02/02/2018

MyBus est une application mobile destinée à simplifier l’utilisation des réseaux de transports urbains pour les villes de 20 000 à 500 000 habitants. Elles disposent de plusieurs fonctionnalités comme le guide horaire, la recherche d’itinéraires ou le m-ticket. Le M-ticket est une gestion dématérialisée des tickets de bus proposée aux agglomérations.

J’ai participé pendant un an à son élaboration et à l’évolution de son écosystème en tant que développeur web en alternance.

Ma première mission consistait à mettre en place une plateforme collaborative de mise à jours des informations des fiches horaires. En binôme, nous avons développé la plateforme à partir du Framework Symfony 3.

À la suite de celle-ci, j’ai travaillé à l’ajout de notifications PUSH sur l’application mobile avec l’utilisation du plugin Cordova “nom du plugin”. L’application étant développée avec AngularJS, j’ai écrit un service qui se charge de la communication avec le plugin.

À partir de l’API de Firebase, j’ai réalisé une interface de gestion de message PUSH sur le back-office de MyBus par ville.

Ma troisième mission était de simplifier la mise à jour de l’application mobile. La mise à jour à travers l’Apple Store et Google Play commençait à devenir fastidieuse quand il fallait sortir un hotfix pour une cinquantaine d’applications. La solution la plus adaptée a été de choisir le système de CodePush. Comme nous travaillons avec une application Hybride, Crossplatform, une grande partie du code n’est pas native mais web.

L’outil permet ainsi de télécharger sur des serveurs les mises à jours qui seront répercutées sur toutes les applications une fois qu’elles seront relancées.

Une mission qui est quotidienne est la mise à jour et l’évolution de notre API. La première mise en ligne a été faite à la hâte pour être essentiellement pratique mais pas évolutive.
Celle-ci est également sous Symfony 3. Le principe de ma mission est de respecter au mieux les principes de l’API RESTful et d’atteindre le niveau le plus élevé sur le modèle de maturité de Richardson.

Accompagné à celà, pour sécuriser l’accès à l’API, j’ai été chargé en binôme de l’ajout du système d’autorisation OAuth2. Nous l’utilisons également comme système d’authentification.
Aujourd’hui, l’API MyBus est totalement documentée. Pour obtenir ce résultat, j’ai utilisé plusieurs bundles mis à disposition par la communauté Symfony. En voici la liste exhaustive :

  • « friendsofsymfony/oauth-server-bundle »,
  • « nelmio/cors-bundle »,
  • « nelmio/api-doc-bundle »,
  • « friendsofsymfony/rest-bundle »,
  • « jms/serializer-bundle »

Des évolutions potentielles seraient d’envoyer des JSON Web Tokens avec OAuth2 et de versionner l’API.

J’ai travaillé à l’utilisation de Magento comme Webservice à l’aide de son API SOAP V2. Des cas d’utilisations comme la gestion des clients, la création de commandes, la récupération d’informations, la gestion de multi-boutiques ont été mis en place sur l’API MyBus. J’ai ainsi dû développer des modules Magento pour répondre à certains cas spécifiques auxquels l’API SOAP ne répondait pas nativement.

Cette expérience chez MonkeyFactory a été très formatrice sur Symfony et le travail d’équipe. J’ai également développé ma rigueur avec l’utilisation de Git sur une adaptation du GitFlow.