Il s'agit de re-développement/refactoring d'une application de maintenance mono-client duplicable avec API commune, convertie en application multi-tenant sans API.
Bootstrap 5, PHP8, Polyfony 3.1.
Projet de 28 jours + 1 jour/mois pendant un an en full remote. Découverte de l'API et de l’environnement bancaire. Collecte et consolidation d'information auprès de sources éparses. Rédaction d'une documentation en Anglais à destination des clients de Treezor, incluant graphiques, schémas et exemples cURL.
L'API permet de gérer
Permettant au total, de lancer sa propre néobanque. Technically, the documentation is written in Markdown and built on Vuepress.
Développement d'un micro-console permettant de suivre superviser les différentes versions d'un logiciel mis à disposition de client. La console vérifie :
J'ai déployé une infrastructure de virtualisation redondante basée sur Proxmox et fournissant :
Une solution similaire à Microsoft Office, 100% en ligne et virtualisée.
Une instance Gitlab et des Gitlab runner pour le développement de projets internes.
Un LXC avec netatalk et avahi afin de permettre les sauvegardes TimeMachine des MacBook Pro de l'entreprise, en wifi.
Un LXC avec Samba dans le rôle de serveur de fichier d'entreprise
Un LXC dans le rôle de VPN pour à distance aux services de façon sécurisée
Le node PVE primary est équipée d'un Xeon E-2278G, de 2x SSD NVMe pour le cache ZFS L2ARC et ZIL, et de deux SSD S-ATA de 4To pour le stockage et de 2x HDD de 4To pour des sauvegardes locales.
Le node PVE replica est équipé d'un i7 8700K, de 2x SSD S-ATA de 250Go pour les caches ZFS L2ARC et ZIL, et de deux HSS de 3To pour les données.
Le node de sauvegardes locales est équipé de 4x HDD de 4To.
Le node de sauvegardes distantes est en Allemagne et reçoit les sauvegardes chiffrées automatiquement.
Pour cette mission, j'ai intégré les maquettes responsives, puis développé le site marchand, avec un moteur e-commerce multilingue sur mesure.
Le site a été optimisé pour les performances, le référencement multilingue, et les fonctionnalités annexes. Le site offre une gestion des stocks, des restrictions d'achats conditionnelles, une intégration complète avec le transporteur (devis personnalisés lors de la commande, estimation du jour de livraison lors de la commande, enregistrement des expéditions et génération des bons d'expéditions automatiquement).
Intégration de maquette Zeplin sur framework PHP et Bootstrap 5. Optimisation référencement et performance. Développement d'un backend pour gestion des projets, etc.
J'ai conçu une infrastructure d'hébergement résiliente et OpenSource, composée de trois serveurs lesquels reposent sur des composants grand public. Pour un investissement materiel de 10 000€ HT, la solution offre :
Cette infrastructure permet de faire tourner plusieurs dizaines de machine virtuelles et conteneurs, avec une excellente disponibilité et des performances de premier ordre.
Déploiement d'une solution Unifi avec controlleurs virtualisés (plusieurs bornes wifi et plusieurs caméras), avec externalisation des captures vidéos sur le système de sauvegarde déporté de la société via une connexion chiffrée.
Pour cette mission, j'ai réalisé un "embellissement", en un minimum de temps d'une application reposant sur Symfony 3 + et Bootstrap 3. L'objectif étant d'accomplir un maximum de changements en un minimum de temps (sans pouvoir réaliser de changement structurels ni chercher à atteindre un degré de finition élevé).
Cet intranet comporte :
Refactoring du CSS, ajout d'animation subtiles.
J'ai développé une API HTTP, permettant de requêter Filemaker en SQL depuis des applications web, sans les restrictions de volume imposés par la "Data API" officielle.
Cette API vérifie l'intégrité des requêtes et des résultats de chaque côté, et est accessible en HTTPS uniquement, utilise ODBC et PHP.
J'ai reproduit les résultats de la publication How intentional acoustic interference Damages availability and integrity in hard disk drives and operating systems, en stoppant la lecture/écriture sur un disque dur par la mise en resonance de sa tête de lecture grâce à l'émission d'une fréquence spécifique. Deux vidéos de ces expérimentations sont disponibles sur ma chaine youtube. Le potentiel d'application pratique est extrêmement réduit, mais l'expérience reste amusante !
Cette micro-application importe des données de plusieurs applications via des API REST, affiche et rafraîchit en temps réel celles-ci sur un téléviseur.
Mise en place d'une VM sous pfSense, avec failover WAN 3 tiers. Fiber Tier1, 4G Tier2, ADSL Tier3. Ce routeur permet à la société de bénéficier d'une connexion internet robuste, même lorsqu'une des connexions tombe en panne ou est saturée.
J'ai composé un serveur à la fois très économique et très performant, avec un RAID-1 de SSD S-ATA, supplémenté par un cache sur SSD NVMe PCIe, ainsi qu'un i7-8700K, lequel, en single-thread a des performances qui excèdent de loin celle du plus onéreux Xeon sur le marché. Debian est installé et configuré, avec toutes les démarches sécuritaires usuelles (Port-knocking, Fail2ban, Logwatch, Lynis, etc.). Le serveur est connecté à un onduleur, afin de déclancher les procédures d’extinction en cas de coupure de courant prolongée. La sauvegarde est automatisée vers deux serveurs, un dans les même locaux, un autre distant. Ce serveur permet l'exécution de plusieurs machines virtuelles nécessaires aux activités de la société.
Cette application multilingue permet aux architectes référencés par PSA dans le monde entier de créer leurs comptes, puis de déposer leurs projets architecturaux (plans, tableurs, etc.) suivant les différentes contraintes et typologies imposées par les marques du groupe (DS, Citroen, etc.). Les projets entrent ensuite dans un processus d'analyse et de validation. L'application permet à différentes entités d'accéder et de valider les dossiers. L'application fournit également une API pour les fabriquants de mobilier et de signalétique, lesquels peuvent ainticiper les besoins de production. Les fabriquant ne pouvant s'interfacer avec l'API recoivent des notifications par email à chaque validation de projet. Les fabriquants diffèrent par marques, par pays et par nature de projet et sont sélectionnés automatiquement par l'application. Enfin, la réception des travaux s'effectue aussi via l'application, qui permet de charger les photos de réception et d'évaluer la conformité. Le client (PSA) peut à tout moment suivre l'état de son réseau en macro comme en micro, via une interface qui lui est dédiée. De nombreuses fonctionnalités pour le confort des utilisateurs ont été implémentées à mon initiative, telle que : l'ajout de mentions "francophone" pour les architectes dont le Pays est connu comme étant majoritairement francophone. La possibilité de traduire automatiquement les messages du chatroom s'ils sont dans une langue non parlées par l'utilisateur. Des notifications en cas d'échec de connexion des utilisateurs, afin de pouvoir leurs apporter une assistance avant même qu'il la sollicite. L'application relève automatiquement une boite mail du projet, et permet de rapprocher les emails reçu directement aux projets concernés afin de parfaire l'historique des projets. L'application propose aussi un moteur de mailing, permettant de cibler les utilisateurs (qu'ils soient architectes, points de vente, collaborateurs PSA, etc.) suivant leurs langues et/ou leurs localisations.
Développement d'une application mobile (web) permettant aux magasins micromania de réaliser un auto-diagnostic visant à établir leur niveau d'accessibilité pour PMR.
J'ai programmé un Arduino afin de simuler l'utilisation prolongée de jouets pour enfant, de manière à identifier des éventuels pannes au niveau électro-mécanique. Il s'agissait de train électriques télécommandés.
Déploiement d'une VM sous PfSense, avec 3WAN (un SDSL, un VDSL et une box 4G illimitée), configuration du QoS, règle de loadbalancing et failover, groupe de routeur pour l'externalisation des sauvegardes, etc. Déploiement d'un IDPS (Suricata), avec pfBlockerNG, blacklistage d'IP par base de données géographiques, détection de pattern, sondes internes à l'entreprise, etc. Serveur DHCP avec tranches de favoritismes basées sur les adresses MAC, DNS Forwarder avec interception des nom de domaines hébergées dans les même locaux afin de rationaliser l'utilisation de la bande passante.
Edit: Il s'agit désormais d'un routeur avec 2 WAN. Une fibre FTTO, et une fibre FTTH.
Le Dr Christian Barré, chirurgien urologue m'a donné pour mission de reprendre son site web, réalisé par un précédent prestataire. Lequel avait ignoré toute notion de performance et de SEO. J'ai donc réalisé une nouvelle intégration (en conservant la maquette à l'identique) suivant les bonne pratiques et l'état de l'art en terme de SEO. Les DOM a été optimisé, ainsi que les performances du site, les metas, les URLs, le linking interne, l'emphasis sur certains termes et mots clés, etc.
Le site dispose d'un backend permettant aux clients d'échanger des documents avec la société. Ainsi que d'un accès simplifié et restreint à certaines données de l'ERP, afin qu'ils puissent suivre l'évolution de leurs dossiers.
J'ai développé une petite application en Perl nommée "Fuck! The network is fucked!", laquelle est lancée par un utilisateur directement depuis le Dock de MacOS lorsqu'il constate que son accès à internet ou à une base de donnée est lent. L'application va alors réaliser un certain nombre de benchmark, sur le réseau local, sur internet, sur l'ordinateur lui même, puis envoyer ce rapport à l'équipe informatique de la société afin que celle-ci puisse analyser la situation et apporter une réponse à l'utilisateur.
Cette plateforme pilote la maintenance des agences du groupe Banque Populaire Grand Ouest (350 agences dans une douzaine de département). Les agences peuvent ouvrir des tickets par email, téléphone ou via une interface web de création de ticket. L'application permet ensuite de suivre les demandes, suggérer des prestataires, gérer un scoring des interventions et des prestataires. La base de données des prestataires est centralisée et servie via une API REST, d'autres clients et applications de maintenance peuvent ainsi se reposer sur cette base de donnée consolidée. Les agences sont bien sûr tenues informées de l'état d'avancement de leurs demandes de maintenance en temps réel.
Gestion du stock en temps réel, système anti erreur lors de la préparation des commandes via l'utilisation d'une scannette à barcodes. Comparaison dynamique des coûts de transport pour chaque commande, afin de retenir le transporteur le plus compétitifs suivant le contenu de la commande.
Il s'agit d'un serveur permettant aux salariés réalisant des photos professionnelles, d'insérer leurs carte SD dans une machine, d'importer automatiquement ces photos sur un serveur de la société, et de les classer automatiquement, grace à la détection de QRCode présents sur les photos. Le QRCode permet aussi le rapprochement avec l'ERP de la société sous Filemaker, afin de consolider les données associées au photos. Un front office est ensuite disponible, afin que d'autres salariés de la société puisse rechercher et travailler avec les photos ainsi déchargées.
Ce lecteur adopte une ambiance suivant les couleurs dominantes de la pochette CD, et dispose d'un moteur de recherche très confortable, prenant en compte, les compteurs de lecture, le nombre de "skip", le nombre d'étoiles, les récents ajouts, etc. afin de suggérer des résultats pertinent et utiles. Il exploite des bases de données XML d'iTunes, mises en cache dans une base SQLite afin d'offrir d'excellentes performances.
Il s'agit d'une application mono-page développée comme Front office de Filemaker. L'application parle à une API (créée sur mesure) gérant la compression et le chiffrement à la volée, l'API parle à Filemaker, via ODBC.
J'ai développé une application mobile (JQuery mobile), initialement pour iPhone et iPad, permettant à des auditeurs de se rendre dans les centre de beauté Yves Rocher, et répondre à un certain nombre de questions. Les responsables du groupe YR disposaient d'une interface client dédiée, permettant de suivre chaque audit, chaque centre de beauté, ainsi que l'évolution dans le temps de la qualité de leur réseau de points de vente.
Il s'agit d'une application multilingues que j'ai été amené à re-développer intégralement près de 10 ans plus tard (en 2018) afin d'intégrer l'ensemble de marques du groupe (Ajout de Peugeot, DS, Opel), avec conservation consolidation des bases de données des marques respectives. Les évolutions dans les besoins ainsi que les évolution techniques amenaient aussi à un re-développement intégral.
J'ai développé une application, visant à dématerialiser les procédure de soudure du groupe Alstom Transport. L'application permet de renseigner des procédures de soudure très détaillées, et de référencer celles-ci sur des inventaires pour différents trains. Suivant la nature de la soudure, sa localisation, ainsi que d'autres critères, des alertes dynamiques sont mise en place relatives aux contraintes de sécurité (marges, etc.). Cette application étant hébergée par Alstom, il a fallu travailler avec les technologies du groupe, càd Windows Server + Oracle. L'installation et le déploiement initial de l'application s'est fait dans les bureaux d'Alstom à Paris.
Le blindtest offrait une chatroom, les utilisateurs choisissaient un pseudo, puis entraient dans la chatroom. Un certain nombre de commande est disponible, afin de changer de morceau, la lecture démarre au même moment chez tous les participants. Pour répondre il suffisait d'écrire le nom de l'artiste ou du morceau dans la chatroom. L'application tenait les scores et permettait éventuellement d'abandonner ou sauter un morceau. Il était aussi possible de restreindre les morceaux aléatoires à un genre musical spécifique.
J'ai développé un moteur de recherche, son crawler (spider multi-threadé), ainsi que l'algorithme de classification, lequel prenait en compte le pagerank, ainsi qu'un certain nombre d'autres critères (dont certains totalement originaux). Deux serveurs 2U Double Xeon et disques 10k RPM en RAID-5 étaient utilisés pour le cluster MySQL sous Debian, ainsi qu'un AMD Ahtlon en frontal pour le serveur web. L'ensemble interconnecté en 1Gb. Avant d'interrompre ce projet, le moteur de recherche avait référencé plusieurs dizaines de millions de page web et offrait des résultats en moins de 500ms.
Il s'agit d'une application en python, avec un wrapper de type application MacOS native, qu'il suffit de lancer après avoir gravé un CD ou DVD d'archive. Le script analyse ensuite le contenu du support optique, et référence ce contenu dans une base de donnée SQLite. Il est ensuite possible de rechercher dans cette base de données via une interface web, et connaître le nom du support optique contenant l'élément recherché.
Mon associé et moi avons développé un CMS, lequel ne nécessitait pas de base de données (ni MySQL, ni SQLite), ce CMS pouvait donc fonctionner sur des hébergement très économiques avec uniquement PHP et SimpleXML. Les données étant encodées dans une base XML avec des fonctionnalités SQL minimales supportées. J'ai essentiellement conçu l'interface graphique de ce CMS, mon associé ayant réalisé le développement.