Projet: Développement d’un outil Collect générique
L'objectif de ce projet est de simplifier la tâche des administrateurs de GRDF en leur permettant, à l'aide de l'outil de créer un formulaire générique. Ce formulaire est utilisé par les prestataires lors de leurs interventions sur le terrain, facilitant ainsi la collecte de données des compteurs gaz installés chez les clients.
Equipe: 1 tech lead, 1 dév. full stack (moi), 1 dév. Backend, 1 dév. Frontend, 1 PO, 2 Assistant P0 et 1 Scrum Master.
Méthodologie: Scrum
Réalisations
● Etudier et analyser le besoin métier en adoptant l’approche BDD (Behaviour Driven Design) :
○ Étude de faisabilité technique et analyse d’impacts d'implémentation des fonctionnalités
○ Estimation des charges
○ Participation aux ateliers de chiffrage des tickets (session de grooming et sprint planning)
● Intégrer et développer la partie Frontend :
○ Concevoir le module principale responsable de la gestion des formulaires
○ Intégration des UI sur la base de Angular Material et Flex Layout
○ Définir le bon format de stockage des formulaires sur une base de données relationnelle : JSON Binary (PostgreSQL).
○ Développer l’IHM en tant que PWA (Progressive Web App)
○ Développer des Service Worker pour des traitements en arrière plan.
● Développer des APIs REST de gestion des campagnes et interventions à base de Spring Boot.
● Configurer le module d'identification des utilisateurs, intégrant la gestion de leurs rôles et autorisations au sein de l'application, en utilisant OKTA comme base.
● Concevoir et développer des Job Spring Batch pour l’extraction, la transformation et l’export de grand volume de données.
○ Extraction des données à partir de la BDD via des requêtes SQL optimisées
○ Exportation des fichiers sous format CSV en utilisant les Chunks.
○ Compresser les fichiers générés en format ZIP,
○ Transférer les fichiers compressés sur un Bucket AWS S3.
● Écrire des tests unitaires pour tous les services métiers et API en utilisant les outils : JUnit, Mockito
● Réaliser les tests de charge et de performance tout au long de la phase de développement en utilisant Apache JMeter.
● Écrire des scripts SQL pour analyser et assainir les données corrompues dans la base de données.
● Appliquer l’approche TDD lors du processus de développement
● Documenter les API avec Swagger
Projet 1 : Maintenir une application de logistique et transport (TMS)
Migration du code source d’une application existante développée sur Java 7 vers Java 8 en plus du refactoring du code existant pour appliquer les bonnes pratiques du Clean Code.
Equipe: 1 dév. Full Stack (moi), 1 dév. Frontend, 1 dév. Backend Java et 1 Dév. Frontend.
Méthodologie: Scrum
Réalisations
● Participer aux cérémonies Agile
● Actualiser et optimiser l'application en incorporant les fonctionnalités avancées de Java 8, telles que l'API Stream, les expressions lambda, ainsi que la nouvelle API Datetime, pour améliorer la performance et faciliter la maintenance du code.
● Optimiser le temps de chargement de l'application :
○ Appliquer un chargement paresseux (Lazy loading) aux relation *ToMany au niveau des entités JPA.
○ Réécrire une grande partie des requêtes écrites en JPQL vers SQL (Native Query) pour améliorer la performance de l’application.
○ Factoriser le code source du Frontend pour favoriser la réutilisation des composants Angular via un dossier partagé.
○ Développer une nouvelle directive Angular responsable de (i) la destruction des objets instanciés et qui ne sont plus utilisables par l’application et (ii) de se désabonner des observables.
● Développer un module permettant l'optimisation de l'envoi de mail sur la base de JavaMail via protocol SMTP (Simple Mail Transfer Protocol).
● Développer un module générique permettant d’importer et d’exporter des données au format PDF, XLS et CSV.
● Documenter les différentes API implémentées avec Swagger API.
● Réaliser les tests unitaires avec JUnit.
● Versionner les évolutions du schéma de base de données en utilisant Flyway
● Prendre en charge la résolution et la correction des anomalies en production (TMA)
● Contribuer à la documentation technique du projet.
Projet 2 : Développer une plateforme de bourse de fret
Analyse, conception et architecture d’une application permettant la gestion d’une bourse de fret qui vise à optimiser la mise en relation entre les entreprises requérantes des services de transport de marchandises et les transporteurs offrants les capacités adéquates pour répondre à leurs besoins.
Equipe : 1 dév. Full Stack (moi) , 2 dév. Frontend, 1 dév. Backend Java
Méthodologie: Scrum
Réalisations
● Rédiger les documents des spécifications fonctionnelles et techniques
● Définir une architecture modulaire pour le développement de la partie Backend.
● Développer un module de gestion de l'authentification et de l'autorisation des utilisateurs en utilisant JWT (JSON Web Token) pour sécuriser les communications entre le client et le serveur d'application.
● Développer le module de gestion des frets et y intégrer un système de broadcasting des modifications entre tous les utilisateurs connectés en utilisant Spring Websocket;
● Développer, selon les bonnes pratiques de développement, des APIs REST pour :
○ Gérer les transporteurs, les entreprises et les véhicules.
○ Reconstituer un fret en combinant les requêtes SQL Natives avec les API Streams, Predicates, Lambdas Expressions.
● Créer un service permettant de reconstituer le trajet optimal pour un transporteur sur Google Maps en utilisant le plugin @angular/google-maps.
● Développer un module d’envoi des mails à base de JavaMail et des pièces jointes au format PDF à générer sur la base de modèle élaborés sur JasperSoft
Projet 2 : Développement d’une plateforme de Cryptomonnaie
Ce projet vise à créer une plateforme de cryptomonnaie spécifiquement conçue pour faciliter le financement des projets participatifs en Afrique. L’objectif est de fournir un moyen transparent, sécurisé et efficace pour collecter des fonds et soutenir des initiatives lo...
Projet 1 : Développer une plateforme de services de gestion commerciale en ligne
L'objectif de ce projet est de simplifier la gestion quotidienne des opérations commerciales pour les entreprises de toutes tailles, en leur offrant un éventail de services accessibles via un modèle d'abonnement.
Equipe: 1 Tech lead (moi), 1 dév. frontend, 1 dév. Mobile, 2 dév. Backend
Méthodologie: Scrum
Réalisations
● Gestion de projet :
○ Recueillir des besoins auprès des clients et établissement du cahier de charges
○ Traiter les informations collectées en les regroupant par module
○ Créer les tâches dans le backlog sur Trello.
○ Établir les plannings du projet au cours du Sprint planning Meeting .
○ Définir les tâches à développer pour une période donnée dans le Sprint Backlog
○ Établir le document de spécification fonctionnelle détaillée (SFD)
○ Assurer le suivi du projet sur Trello.
○ Adopter la méthodologie Agile pour la gestion de projet et le framework SCRUM
○ Faciliter la prise des décisions en organisant après chaque fin de sprint, les sprints reviews
○ Contribuer à la définition des choix technologiques à utiliser pour le projet.
○ Rédiger la documentation technique et fonctionnelle.
● Élaborer une architecture en microservices en se basant sur l’approche DDD (Domain Driven Design). Cette architecture est organisée par domaine d'activité, au sein duquel se distinguent différentes couches : les entités, les repositories, les DTO, les mappers, les services, et la couche web.
● Développer les microservices sur la base de Java/Spring Boot
● Développer un service Java responsable de l’impression des tickets de commande.
● Installer et configurer un Cluster Kafka sur la base des images Docker, Apache ZooKeeper. Ce Cluster sert pour la communication asynchrone (Producer et Consumer) entre les différents microservices via des Topic.
● Implémenter le SAGA Pattern pour gérer les transactions distribuées sur plusieurs microservices.
● Déployer les microservices en utilisant une chaîne CI/CD (Docker, Gitlab, Gitlab CI/CD, Nexus, SonarQube)