Communauté Laravel : tout savoir !

Laravel est bien plus qu’un simple framework PHP ; c’est aussi toute une communauté qui joue un rôle essentiel dans son évolution et son succès. Cette communauté se distingue par son engagement, ses contributions, et ses ressources éducatives qui facilitent l’adoption et l’utilisation du framework. Dans cet article, nous explorerons quelques aspects de la communauté Laravel : les événements, les contributeurs notables, et les nombreuses ressources disponibles pour les développeurs.

Laracon : La Conférence Internationale de Laravel

Laracon est l’événement phare de la communauté Laravel. Cette conférence se tient deux fois par an, historiquement aux États-Unis et en Europe, bien que des éditions en ligne aient eu lieu ces dernières années en raison de la crise sanitaire. Laracon rassemble des développeurs du monde entier pour discuter des dernières nouveautés du framework, partager des expériences et apprendre de nouveaux concepts.

La comunauté Laravel se réunit pour le Laracon EU 2025 Amsterdam

Les sujets abordés lors de Laracon vont au-delà de Laravel et couvrent des thèmes variés du développement web. C’est un lieu de rencontre où les développeurs peuvent non seulement améliorer leurs compétences techniques mais aussi nouer des relations professionnelles et personnelles. L’édition en présentiel de 2024 à Amsterdam a marqué un retour très attendu à une interaction en face-à-face, renforçant encore la cohésion de la communauté.

La prochaine étape à Dallas, Texas, prévue en août 2024 est déjà complète, et nous attendons avec impatience le Laraconn EU 2025 !

Spatie : Un Pilier de l’Open Source Laravel

Spatie est une société belge qui s’est distinguée par la création de nombreux paquets open-source pour Laravel. Ces paquets sont reconnus pour leur qualité et leur utilité, et sont largement utilisés dans la communauté. Parmi les paquets les plus populaires de Spatie, on trouve :

  • spatie/laravel-permission : Ajoute facilement des rôles et des permissions à une application Laravel.
  • spatie/image-optimizer : Optimise les images pour améliorer les performances des sites web.
  • spatie/laravel-activitylog : Enregistre les actions des utilisateurs pour un suivi précis de l’activité.
  • spatie/laravel-backup : Simplifie la mise en place de sauvegardes complètes de l’application.
  • spatie/laravel-medialibrary : Permet d’associer des fichiers médias aux modèles Eloquent.

Ces contributions font de Spatie une référence incontournable dans l’écosystème Laravel. Lisez également notre article sur nos paquets préférés de l’écosystème Laravel.

Laracasts : Apprendre et Maîtriser Laravel

Laracasts est une plateforme éducative dédiée au développement web, avec un focus particulier sur Laravel. Elle propose des screencasts et des tutoriels couvrant une large gamme de sujets, allant de Laravel et PHP à JavaScript, Vue.js, et bien d’autres technologies pertinentes.

communauté laravel découvre laracast pour apprendre et maîtriser laravel

Jeffrey Way, le fondateur de Laracasts, est lui-même un contributeur actif à la communauté Laravel. Ses vidéos sont réputées pour leur clarté et leur pédagogie, rendant l’apprentissage de Laravel accessible même aux débutants. Laracasts est devenu une ressource incontournable pour de nombreux développeurs souhaitant approfondir leurs connaissances et rester à jour avec les meilleures pratiques du développement Laravel.

Laravel News

Le blog le plus complet autour de Laravel ! Laravel News est un incontournable pour les développeurs qui utilisent le framework Laravel. Il propose un large contenu autour des actualités de Laravel, que ce soit la présentation de paquets, la mise en avant d’événements, la centralisation de ressources documentaires, ou encore la description détaillée de toutes les nouvelles versions du framework disponibles. Une newsletter hebdomadaire est disponible, recensant les nouveautés et les meilleures informations de la semaine.
Laravel News est une aubaine pour tous ceux qui veulent faire une veille active autour de l’éco-système Laravel.

Conclusion

Le dynamisme de la communauté Laravel explique aussi le succès de ce framework. Les événements comme Laracon, les ressources éducatives de Laracasts et les nombreux paquets open-source disponibles montrent l’engagement et la passion des développeurs pour améliorer et étendre Laravel. Que vous soyez débutant ou développeur expérimenté, la communauté Laravel offre toutes les ressources pour bien développer.
TheCodingMachine est spécialisé sur Laravel depuis 2025, vous avez un projet en Laravel ? Contactez-nous.

WordPress : 10 optimisations pour l’éco-conception

À l’heure où la réduction de l’empreinte écologique numérique devient une priorité, le concept d’éco-conception s’impose comme un enjeu clé pour les entreprises et les développeurs. Dans ce contexte, WordPress, le CMS le plus utilisé au monde, se retrouve au cœur des débats. Bien que puissant et flexible, WordPress peut parfois être énergivore en termes de ressources, que ce soit par l’utilisation de thèmes lourds, d’extensions mal optimisées ou de pratiques de développement inefficaces.

L’éco-conception WordPress vise à réduire cette consommation d’énergie tout en maintenant une expérience utilisateur optimale. Dans cet article, nous examinerons dix optimisations concrètes qui permettent de concevoir des sites WordPress plus respectueux de l’environnement, tout en garantissant performance et accessibilité.

Optimiser vos images

Sur un site vitrine classique, les images représentent souvent 50 % du poids d’une page. Il y a trois moyens de diminuer l’impact des images : 

  • Les compresser et adapter leur format, le format WebP est recommandé. Pour cela, vous pouvez utiliser des plug-ins dédiés comme WebP Express pour WordPress. 
  • Ne pas charger toutes les images systématiquement. Par exemple dans le cas d’un slider, faire en sorte que l’image ne se télécharge que si l’utilisateur clique sur la flèche pour voir l’image suivante.
  • Limiter tout simplement le nombre d’images sur votre site.

Mettre en place du cache

Les systèmes de cache permettent d’éviter de recharger des éléments déjà téléchargés (ex : des images, des données, …).  Ceci permet d’alléger ou d’éviter les requêtes auprès des serveurs. 

Les navigateurs des visiteurs gèrent leur propre cache. A part quelques options configurables par l’utilisateur, le fonctionnement de ce cache est défini par les paramètres du serveur. Pour des sites vitrines, de nombreuses solutions et plug-ins existent.

Toutefois, mettre en place un système de cache peut être technique et cela dépend du niveau de complexité de votre application : calculs et algorithmes avancés, traitement et envoi d’un grand nombre de données, … Dans ce cas, il s’agira d’un sujet à traiter à part avec votre prestataire dans une logique d’arbitrage coût / bénéfice.

Mettre en place du lazy loading

Le lazy loading ou chargement différé est une technique qui permet de charger les ressources d’un site web en différant le chargement des ressources non critiques, non essentielles, au début du temps de chargement d’une page.

Il s’agit d’une technique qui peut être utilisée pour empêcher un navigateur de charger des ressources non critiques sur une page web lorsqu’il commence à générer la page. Par exemple, cela ne sert à rien de charger à l’arrivée de l’utilisateur une image tout en bas de la page, elle sera téléchargée lorsque l’utilisateur descendra.

Le lazy loading est aussi à rapprocher de la notion de First Contentful Paint expliquée par l’illustration ci-dessous.

GT Metrix - Eco-conception wordpress

Le First Contentful Paint (FCP) mesure le temps entre le clic sur le lien d’un site Internet et le moment où il affiche le premier bit de contenu de la page. Le FCP a été défini par Google comme une donnée de référence de son algorithme de référencement. Mettre en place du lazy loading est donc aussi important pour votre référencement.

Mettre en place du lazy loading n’est pas toujours évident, il s’agit de faire des arbitrages entre ce qui est considéré comme du contenu critique ou non. Sur WordPress, il existe néanmoins des plugins pour mettre en place un lazy loading simple comme par exemple LazyLoad.

Minimiser le code HTML, CSS et JS

Minimiser du code signifie optimiser du code pour gagner de l’espace sans en altérer la fonctionnalité. Concrètement il s’agit de supprimer tous les espaces blancs inutiles, les commentaires, les caractères de nouvelle ligne et tout ce qui rendait initialement le code lisible. Ainsi, une fois qu’il a été minifié, le code devient presque illisible à l’œil nu.

La minification du code est possible dans toutes les technologies de programmation de base, notamment HTML, CSS et JavaScript. Cependant, le processus n’est pas instantané. Un certain travail est nécessaire pour rendre le code plus compact tout en le gardant fonctionnel.
Pour vous aider, il existe des outils de minification spécifique à chaque langage. Vous trouverez une première liste d’outils dans cet article.

Limiter les animations Javascript sur votre site

Evitez les bibliothèques et les frameworks Javascript volumineux, privilégiez des alternatives légères et n’incluez que les parties nécessaires de bibliothèques ou frameworks pour réduire la taille finale du bundle.

Dans le code, évitez aussi les manipulations fréquentes du DOM qui peuvent ralentir votre application. Utilisez des techniques de manipulation de DOM efficaces, comme l’agrégation de modifications avant une mise à jour du DOM ou l’utilisation de Virtual DOM dans des frameworks modernes.

Éviter ou optimiser l’usage de la vidéo

Dans la mesure du possible, il est préférable de ne pas utiliser de vidéo. En revanche si son usage est nécessaire du point de vue de la compréhension du message alors il est très important de l’optimiser. 

Au-delà de la possibilité de compresser cette vidéo pour avoir une qualité adaptée au web, il est également possible de questionner la nature de la vidéo. A-t-elle besoin de faire plus d’une minute alors que de nombreux utilisateurs ont tendance à scroller  sans regarder la vidéo dans son intégralité ? Bref, une vidéo plus courte et mieux ciblée permet une meilleure attention de l’utilisateur et réduit la consommation énergétique.

Il est aussi important de se demander si la vidéo doit se lancer de manière automatique. En effet, il est préférable pour l’expérience utilisateur et l’impact écologique de la page d’insérer une fonction ‘play’ pour que l’utilisateur puisse la lancer seulement si cela est pertinent pour lui.

Désactiver ou optimiser les CRON

CRON est une abréviation de crontab, elle-même une abréviation de chrono table qui signifie table de planification.

Issu du monde Unix, le programme CRON, lancé au démarrage d’un système d’exploitation, permet de planifier l’exécution automatique de tâches avec une certaine fréquence ou à un moment donné. Parmis les tâches les plus régulièrement exécutées via des CRON :

  • Planification d’un job de sauvegarde de votre site (extension BackWPup pour WordPress par exemple).
  • Planification de l’optimisation de la base de données (extension WP-Optimize pour WordPress par exemple).
  • Mise à jour automatique de votre version (de WordPress ou autre),

Bien que la plupart de ces actions restent recommandées, l’exécution de chacune de ces tâches consomme des ressources. Il est donc important de se demander quelle doit en être la bonne fréquence ou s’il est préférable de gérer cela manuellement.

Eviter les iFrames qui s’affiche directement au chargement de la page

Une iframe est un élément HTML qui permet d’intégrer une page web dans une autre page web. Cette méthode permet par exemple d’intégrer une vidéo hébergée sur une plateforme tierce en l’affichant directement sur votre site web. L’exemple le plus répandu est celui d’une vidéo Youtube.

Fonctionner à travers des Iframes ne permet pas d’avoir le contrôle total sur le contenu de l’autre page qui sera affichée. Il est donc possible de se retrouver à charger des fonctionnalités et du contenu inutiles.
Dans le cas des vidéos, il est ainsi recommandé de les héberger vous même sur votre propre site comme expliqué dans cet article.  Enfin, il est important de faire en sorte que les Iframes ne soient affichés et chargés qu’à la demande de l’utilisateur (dans la mesure du possible).

Limiter le recours direct à des services tiers complexes pour des usages simples (ex : Google Map)

GoogleMap est l’exemple le plus répandu. Bien souvent, une simple image / capture d’écran avec votre adresse sur une carte suffira amplement à votre utilisateur. D’autant que, désormais, de nombreux téléphones permettent la reconnaissance automatique d’une adresse dans un texte et l’ouverture automatique de Google Map via un simple clic.

De manière plus générale, pour vous inscrire dans une démarche d’éco-conception, il est nécessaire de vous demander si toutes les fonctionnalités d’un service tiers sont utiles pour le parcours utilisateur visé.

Pour réutiliser l’exemple de GoogleMap :  est-il nécessaire d’avoir les fonctionnalités de calcul d’itinéraire, de gestion des avis ou de géolocalisation si le but est simplement d’afficher une adresse ?

La multiplication des services tiers, des solutions SAAS et la démocratisation des API a néanmoins rendu complexe une telle approche. Il n’est pas toujours évident de savoir et de maîtriser toutes les fonctionnalités d’une application tierce d’autant qu’elles évoluent potentiellement à chaque mise à jour.

Bref, dans une démarche d’éco-conception, une des meilleures solutions semble être encore de limiter au maximum l’usage de ces solutions.

Enfin, certains types d’API, comme GraphQL par exemple, permettent de personnaliser les requêtes afin de ne récupérer que les données nécessaires au besoin de votre utilisateur.

Choisir un hébergeur éco-responsable et bien dimensionner son hébergement

Comme expliqué précédemment, la performance écologique de votre service numérique va en grande partie se traduire par une consommation d’électricité côté client (téléphone et PC de vos utilisateurs) et côté serveur. Pour connaître les émissions associées à celle-ci, il est donc nécessaire d’analyser l’origine de l’électricité consommée. 

Si il est difficile de savoir si vos utilisateurs chargent leur téléphone avec des panneaux solaires, il vous est en revanche possible d’agir côté serveur en choisissant un hébergeur “green”.
Ces hébergeurs utilisent de l’électricité d’origine renouvelable et effectue différentes actions à impact positif (planter des arbres par exemple). Attention toutefois au Green Washing, vous trouverez une approche du sujet dans cet article. Les différentes normes ISO en lien avec l’environnement (ISO 14 001 et ISO 50 001) sont de bonnes preuves de sérieux de la part d’un hébergeur.

En résumé

L’éco-conception WordPress est bien plus qu’une tendance, elle représente un engagement envers une approche plus responsable et durable du développement web. En optimisant l’utilisation de WordPress grâce à des pratiques telles que la réduction du poids des pages, la gestion intelligente des plugins ou encore l’optimisation des médias, il est possible de créer des sites à faible impact environnemental, sans compromettre la qualité. À l’heure où les utilisateurs sont de plus en plus sensibles aux questions écologiques, adopter ces bonnes pratiques peut non seulement améliorer la performance de votre site, mais aussi renforcer l’image éthique et durable de votre marque.

TypeScript : 10 astuces pour gérer les erreurs

Aujourd’hui, TypeScript a le vent en poupe grâce à la consistance et la cohérence que le typage permet d’apporter au code JavaScript. Toutefois, il n’est pas si simple d’exploiter pleinement le potentiel de TypeScript et de son typage.

En effet, une mauvaise implémentation de votre typage et des règles qui lui sont associées entraînent une non-détection des erreurs par le compilateur ainsi qu’un code complexe, difficilement maintenable et refactorable.

Dans cet article, le cofondateur de TheCodingMachine, David Négrier, vous donne ses astuces et outils pour exploiter pleinement le potentiel du typage et éviter les erreurs.

Bref, facilitez-vous la vie avec un code simple, bien construit et facile à retravailler !

Typer, mais pourquoi faire ?

  • Éviter les régressions: en cas de changements du code (refactoring, correction de bugs, ajout de fonctionnalité etc…), le compilateur vous alertera des incohérences ou oublis
  • Gagner du temps: grâce au typage l’IDE est plus pertinent dans ses suggestions d’autocomplétion.

Les outils et les solutions qu’on vous propose

TS-reset

Un paquet qui prend tous les typages codés par défaut (JSON.parse(), …) et remplace le typage any par un typage unknown.

Ceci permet d’être plus stricte dans l’analyse des types et donc remonter une erreur sur ce type de code:

const user = JSON.parse('{"id": 1, "firstName": "John"}')
console.log(user.firstName) // 'user' is of type 'unknown'.

Sans ts-reset aucune erreur ne sera remontée car tout est autorisé sur any. Alors qu’avec le développeur est forcé de vérifier le typage:

const user = JSON.parse('{"id": 1, "firstName": "John"}')
if (
  user instanceof Object
  && 'firstName' in user
  && typeof user.firstName === 'string'
) {
  console.log(user.firstName) // 'user.firstName' is a string.
}

– Créer une interface

Il est important de créer des interfaces pour définir la structure d’un objet avec ses différents champs.

interface User {
  id: number;
  firstName: string;
}

// On ajoute `as User` pour indiquer que cette variable est de type User
const user = JSON.parse('{"id": 1, "firstName": "John"}') as User
console.log(user.firstName) // Affiche "John"

Mais que se passe-t-il si le format change dans le JSON d’origine ?

Par exemple, si on remplace firstName par first_name dans le fichier JSON, un bug est créé et on retrouve ”undefined” dans nos logs (sans message d’erreur). 

Cela est dû au fait que la vérification ne s’effectue pas lors de l’exécution, mais uniquement lors de la compilation. Les interfaces disparaissent dans le code compilé.

L’erreur provient de l’utilisation de as User, le mot clé as en TypeScript permet de définir un “Type Assertion” et donc de forcer, du point de vue du compilateur, le type d’une variable. 
Si le type est faux, l’analyse faite par TypeScript devient incorrecte. L’erreur est humaine et le compilateur a tendance à faire moins d’erreurs. En particulier, lorsque une application complexe évolue au cours du temps. Donc un as dans TypeScript doit toujours être un sujet de vigilance !

– Utiliser les Type predicate

Afin d’éviter le as il faut restreindre (narrow) le type. Une solution lorsqu’on a une interface est d’utiliser un Type predicate:

interface User {
  id: number;
  firstName: string;
}

// On définit un type predicate de la forme `parameterName is Type` 
function isUser(user: any): user is User {
  return user
    && typeof user.id === 'number'
    && typeof user.firstName === 'string'
}

const user = JSON.parse('{"id": 1, "firstName": "John"}')
if (! isUser(user)) { // On appelle le predicate
  throw new Error('Invalid user')
}
console.log(user.firstName) // Ici on est sûr d'avoir un User

Avec ce code, si firstName devient first_name on aura une erreur “Invalid user” au runtime. En effet, le type predicate est conservé et exécuté.

Toutefois, implémenter des types predicate c’est fastidieux et repose toujours sur la responsabilité du développeur qui doit l’implémenter dans son code de manière proactive. 

Il faut aussi être vigilant lors de l’écriture du type predicate pour ne pas faire d’erreur à ce moment-là et bien penser à le mettre à jour lorsqu’on modifie le type lié.

– La librairie Zod

Zod est une libraire qui écrit des types predicate pour nous.
Grâce à elle nous pouvons remplacer le type predicate isUser et définir une variable UserSchema qui est un objet zod:

interface User {
  id: number;
  firstName: string;
}

const UserSchema = z.object({
  id: z.number(),
  firstName: z.string(),
})

const maybeUser = JSON.parse(...)
const user = UserSchema.parse(maybeUser)
// À partir d'ici user est de type `{ id: number, firstName: string }

Zod peut aussi déduire l’interface à partir du Type Guard et on peut donc se passer d’écrire l’interface :

type User = z.infer<typeof UserSchema>

Lors de l’exécution, Zod affichera une erreur détaillé s’il y a un soucis:

ZodError: [{
  "code": "invalid_type",
  "expected": "string",
  "received": "undefined",
  "path": ["firstName"],
  "message": "Required",
}]

Zod est donc particulièrement utile : 

  • Dans les projets Front qui utilisent des inputs venant de l’extérieur, en particulier d’API.
  • dans les projets Back qui utilisent Node.JS, en cas d’input HTTP, d’upload de fichier, d’input CLI ou de réponse d’API, …

Il est néanmoins inutile d’utiliser Zod pour un service qui utilise déjà des données validées (données en provenance d’un Controller par exemple). Dans ce cas, les interfaces peuvent suffir… ou alors il est possible d’utiliser l’inférence propre à TypeScript.
Une autre librairie similaire est valibot.

– Type Inference

TypeScript fait de l’inférence de type. C’est-à-dire qu’en analysant les contraintes appliquées à chaque variable il peut en déduire son type. Ceci évite de devoir tout typer tout le temps :

const a = 1 // a est de type number
const b = [0, 1, null] // b est de type (number | null)[]
const c = a // c est de type number
const d = { id: 1, firstName: "John" } // d est de type { id: number; firstName: string; }
window.onmousedown = function (e) { /* ... */ }; // e est de type MouseEvent

Il est donc possible de se passer d’interface la plupart du temps. Nous recommandons fortement de s’appuyer sur l’inférence de type et utiliser Zod  là où c’est nécessaire pour gagner en efficacité et en maintenabilité de votre code !

GraphQL et le paquet graphql-codegen

L’utilisation de Zod et TypeScript peut être synonyme de verbosité. En effet, pour être correcte nous devrions ré-écrire les structures des objets renvoyés par l’api dans notre code front. Le travail est fait 2 fois: en back et en front.

Contrairement à du JSON, GraphQL définit un schéma, or cela va typer l’API correctement.

Le paquet graphql-codegen est un outil qui va scanner votre code TypeScript et va trouver les requêtes GraphQL à l’intérieur. 

Puis, à partir de ces requêtes et du schéma généré par le serveur, graphql-codegen va générer automatiquement des types TypeScript. 

Néanmoins, mettre en place graphql-codegen nécessite un peu de travail notamment en CI/CD.

– Swagger/OpenAPI (via API Platform)

Dans la même idée, certains framework (type API Platform) permettent de générer les interfaces typescript en fonction des retours des endpoints REST.

Il existe aussi des générateurs pour les standards Swagger/OpenAPI.

– Framework trpc

Il s’agit d’un framework Node.Js dans lequel on définit côté serveur une procédure qui prend un type Zod en input puis côté client on appelle la fonction ce qui permet un typage fort des deux côtés.

Il s’agit de faire des appels RPC entre le serveur et le client.
Hono propose aussi ce genre de fonctionnalité.

Protobuf

Solution plus bas niveau, il s’agit d’un mécanisme de Serialization, un peu comme du JSON mais fortement typé.

On définit des types Protobuf qui génèrent des interfaces TypeScript.

Particulièrement utile pour optimiser les performances car les messages sont compressés de manière binaire.

– No Front, l’approche JS Less

Solution la plus radicale, mais sans Front, la question ne se pose plus ! On appelle cela le JS Less et de nombreuses solutions existent, vous pouvez lire notre article sur le sujet.

Multisituation : La stratégie pour gérer un grand nombre de sites web

Gérer un grand nombre de sites internet peut vite devenir un casse-tête, surtout lorsque chaque site nécessite des mises à jour régulières, une maintenance continue et une sécurité renforcée. Cependant, des solutions existent pour simplifier cette gestion ! Dans cet article, nous allons explorer trois approches différentes pour gérer efficacement un ensemble de sites web, que ce soit pour une petite agence web ou une grande entreprise.

Solution 1 : Utiliser un outil d’administration centralisée

La première solution consiste à utiliser un outil d’administration qui permet de centraliser la gestion de nombreux sites internet. Par exemple, pour WordPress, parmi les outils disponibles sur le marché, WP Umbrella se distingue par sa simplicité d’utilisation et ses nombreuses fonctionnalités.

Pourquoi choisir WP Umbrella ?

WP Umbrella est un service en ligne qui facilite la maintenance et la gestion d’un ensemble de sites WordPress à partir d’un seul tableau de bord. Ce type d’outil est particulièrement utile pour les agences web ou les freelances qui gèrent plusieurs sites pour différents clients.

Voici quelques avantages clés de WP Umbrella

  1. Centralisation des mises à jour : Avec WP Umbrella, vous pouvez mettre à jour tous vos sites WordPress en un clic, qu’il s’agisse des plugins, des thèmes ou du core de WordPress. Cette centralisation permet de gagner un temps précieux et d’éviter les oublis qui peuvent compromettre la sécurité de vos sites.
  2. Surveillance de la performance : WP Umbrella propose également un suivi des performances de chaque site. Vous pouvez surveiller le temps de réponse, la disponibilité, et recevoir des alertes en cas de problème. Cela permet d’intervenir rapidement avant que les utilisateurs finaux ne soient impactés.
  3. Gestion des sauvegardes : La gestion des sauvegardes est un autre atout majeur de WP Umbrella. Vous pouvez planifier des sauvegardes régulières et les stocker sur un service de cloud sécurisé. En cas de problème, la restauration d’un site se fait en quelques clics.

Sécurité renforcée : En utilisant un outil comme WP Umbrella, vous pouvez automatiser des tâches de sécurité telles que le scan de malwares ou la vérification des failles de sécurité. Cela permet de réduire les risques d’attaques sur vos sites.

Gestion de nombreux sites internet avec WP Umbrella

Limitations

Bien que WP Umbrella soit une solution puissante, elle est spécifiquement conçue pour les sites WordPress. Si vous gérez des sites utilisant d’autres CMS ou des technologies différentes, cette solution ne pourra pas centraliser l’administration de tous vos sites.


Solution 2 : Utiliser une image Docker standardisée

La deuxième solution consiste à utiliser une image Docker standardisée pour déployer et gérer vos sites avec un outil CMS unique (WordPress ou autre). Docker est une technologie de conteneurisation qui permet d’isoler chaque application dans un environnement léger et portable. En créant une image Docker standardisée, vous pouvez simplifier le déploiement et la gestion de vos sites.

Avantages d’une image Docker standardisée

  1. Uniformité des environnements : Une image Docker permet de garantir que tous vos sites fonctionnent dans un environnement identique, indépendamment de la machine ou du serveur sur lequel ils sont déployés. Cela élimine les problèmes liés aux différences de configuration entre les environnements de développement, de test et de production.
  2. Facilité de mise à jour : En mettant régulièrement à jour votre image Docker, vous pouvez rapidement déployer ces mises à jour sur tous vos sites. Pour WordPress par exemple, cela inclut les mises à jour du core, des plugins et des thèmes. En automatisant ce processus, vous réduisez le risque d’oublis ou d’erreurs humaines.
  3. Scalabilité : Docker permet de scaler vos sites très facilement. Vous pouvez déployer de nouvelles instances de vos sites en quelques secondes, sans avoir à reconfigurer manuellement chaque serveur. Cela est particulièrement utile lorsque vous devez gérer un grand nombre de sites ou lorsque vous anticipez une augmentation de trafic.
  4. Isolation et sécurité : Chaque conteneur Docker est isolé des autres, ce qui renforce la sécurité. Si un site est compromis, les autres restent protégés. De plus, cette isolation facilite le debugging en cas de problème.

Inconvénients

Cependant, une image Docker standardisée pour WordPress ne permet pas la gestion de sites multi-tenant (multi-locataires). Cela signifie que chaque site doit être déployé dans un conteneur séparé, ce qui peut augmenter les coûts en termes de ressources serveur si vous gérez un très grand nombre de sites.


Solution 3 : Opter pour une solution multi-tenant avec Prismic par exemple

La troisième solution consiste à utiliser une véritable architecture multi-tenant pour gérer un grand nombre de sites. Prismic, un CMS headless populaire, offre une telle solution, permettant de gérer plusieurs sites web à partir d’une seule instance.

Avantages de Prismic pour une gestion multi-tenant

  1. Centralisation des contenus : Prismic permet de centraliser la gestion de contenu pour plusieurs sites. Cela signifie que vous pouvez gérer toutes les pages, articles, et autres contenus depuis une seule interface, tout en les distribuant vers différents sites.
  2. Flexibilité et personnalisation : Avec une solution multi-tenant, chaque site peut avoir sa propre identité visuelle et ses propres fonctionnalités, tout en partageant la même base de contenu. Cela permet de personnaliser l’expérience utilisateur en fonction des besoins spécifiques de chaque marque ou entité.
  3. Références solides : Prismic est utilisé par des entreprises de renommée mondiale comme la Fédération Française de Tennis (FFT) ou LVMH, ce qui démontre sa capacité à gérer des déploiements complexes avec une exigence élevée en termes de performance et de fiabilité.
  4. Sécurité et scalabilité : En tant que solution headless, Prismic offre une séparation claire entre le backend (gestion du contenu) et le frontend (affichage du contenu). Cela permet de renforcer la sécurité et de faciliter la scalabilité. Vous pouvez gérer des centaines de sites sans compromettre la performance.

prismic builder

Limitations

L’une des principales limitations de Prismic réside dans son coût, qui peut être plus élevé que les solutions précédentes, surtout pour les petites entreprises ou les projets à budget limité. De plus, la mise en œuvre d’une solution multi-tenant nécessite une certaine expertise technique, ce qui peut impliquer un temps de mise en place plus long.

Conclusion

Gérer un grand nombre de sites web est parfois complexe, mais les solutions existent pour simplifier cette tâche tout en garantissant une performance optimale. Que vous choisissiez d’utiliser un outil d’administration centralisée comme WP Umbrella, de déployer vos sites via des images Docker standardisées, ou d’opter pour une solution multi-tenant avec Prismic, il est essentiel de bien évaluer vos besoins spécifiques avant de prendre une décision.

Chacune de ces solutions présente des avantages et des inconvénients, mais toutes peuvent vous aider à gérer efficacement un grand nombre de sites, à améliorer leur sécurité, et à assurer leur performance sur le long terme. Le choix de la solution dépendra principalement de votre environnement technologique, de la complexité de vos sites, et de vos ressources disponibles.

Front-End As a Service (FEaaS) : La solution aux complexités Headless

Avec l’émergence des solutions Headless, pas facile de disposer d’un front-end rapidement alors de nouvelles solutions arrivent pour vous simplifier la vie. Chez TheCodingMachine on commence à être fan des solutions Front-End As a service… Découvrez pourquoi :

Le problème d’une plateforme Headless est qu’elle est … Headless !

Lorsque l’on met en œuvre une solution Headless (parce qu’ils présentent de nombreux avantages), difficile de disposer d’un Front-end rapidement ! C’est même le principe… Malheureusement, investir dans le développement d’une interface Front-end entièrement sur-mesure représente un coût souvent assez important : prestation d’un designer, développement HTML et CSS, optimisation du SEO et du responsive design, … Est-ce que cela veut dire que les meilleures solutions du marché sont hors de portée pour les entreprises qui ne disposent pas de budgets conséquents ?

Il est parfois aussi tout simplement difficile de se projeter en partant d’une feuille totalement blanche. C’est particulièrement risqué dans un secteur où une partie des usages sont ancrés et associés à un certain nombre de bonnes pratiques (gestion du panier, des favoris, parcours d’achat,…).

Pour remédier à cela, la plupart des solutions Headless proposent un Front-end basique. C’est le cas de Sylius, par exemple, qui propose une interface Front-end de base reposant sur Twig (moteur de templating basé sur PHP). Bien que cette version standard soit parfaitement adaptée pour des boutiques simples, elle est moins optimisée qu’une vitrine reposant uniquement sur des pures technologies Front-end comme Vue.Js ou React.Js. Ainsi, à moins d’investir sur des développements spécifiques, ce thème standard peut vite atteindre des limites en termes de performances à la fois techniques et SEO.

Bref, il est difficile d’avoir le meilleur des deux mondes ! C’est-à-dire un Front-End (votre vitrine) pouvant évoluer séparément de votre Back-End (votre arrière-boutique) sans développements supplémentaires et des performances optimales.

Front-End As a Service

Heureusement des solutions Front End As a Service émergent …

C’est la problématique à laquelle Alokai (anciennement Vue Storefront) répond. Ce type de solutions sont appelées Front-End As a Service. Le principe du Headless est de pouvoir connecter tous les composants de votre e-commerce (Front, Paiement, ERP, Gestion des stocks,…) à travers des API. Alokai propose donc un Front-end “clé en main” prêt à être connecté au reste de votre éco-système via des API prêtes à l’emploi et respectant toutes les bonnes pratiques.

Les avantages sont nombreux : 

  • Déploiement rapide et sécurisé. La séparation du Front-End et du Back-End permet des mises à jour et des améliorations indépendantes, réduisant ainsi les temps d’arrêt et les risques d’erreurs ;
  • Migration progressive de votre e-commerce, plus besoin de tout bouleverser pour simplement changer de vitrine. Redonnez le pouvoir à vos équipes marketing ! Vous pouvez même offrir des expériences utilisateur personnalisées en utilisant des données comportementales et de navigation pour adapter le contenu ;
  • Optimisation conséquente des performances techniques avec l’usage de technologies adaptées comme Vue.Js et Nuxt.Js qui permettent par exemple un chargement asynchrone ou le lazy loading ou bien encore l’optimisation des images voire la gestion simplifiée de la logique de cache ;
  • Un mode Progressive Web Application directement disponible afin d’améliorer le responsive design et l’expérience mobile ;
  • L’optimisation du SEO grâce à la génération côté Front.

Chez TheCodingMachine nous sommes assez convaincus par ces solutions Front-End as a Service et c’est pourquoi nous avons décidé de faire un socle technique (Sylius + Alokai) prêt à l’emploi. On peut alors aller vite, très vite pour le déploiement d’une solution toute nouvelle.

Et, cerise sur le gâteau, ces solutions peuvent aussi fonctionner si l’on a envie de cacher des vieilleries (vous n’auriez pas un Drupal ou un Magento 1 qui trainent ?)…

Bref, si vous souhaitez en discuter avec nous, nous serions ravis de vous présenter ce que l’on peut faire et vous faire une démonstration.

IA : Que faire ? Comment faire ?

Deux questions se posent rapidement lorsque l’on parle d’IA : que faire et comment faire ! Déjà le « que faire » n’est pas si évident parce nous sommes habitués à réfléchir en termes de processus ou de données et assez peu de manière globale. Alors, même si vous pouvez trouver beaucoup de uses case sur le web, difficile de les faire correspondre à sa problématique. 

Ensuite, le « comment faire » n’est pas si évident non plus. Faire de la recherche pure n’est pas à la portée de toutes les bourses ! Heureusement, de nombreux outils se développent et vous permettent d’intégrer l’IA de plus en plus facilement. 

Alors cet article vous propose de répondre à ces questions de manière très pratique. Vous allez savoir quoi faire et comment le faire !

La génération de contenus

La génération de contenu est l’application la plus répandue de l’IA. Grâce à des modèles avancés comme GPT-3.5 et GPT-4, vous pouvez automatiser la création de textes, d’images, et autres formats de contenu à partir de simples prompts.

Que faire : 

Recherchez ce que vous produisez comme contenu, avec par exemple : marketing (articles ou publication sur les réseaux sociaux), RH (les fiches de poste par exemple), eCommerce (descriptions de produits)… 

Comment faire : 

  • OpenAI GPT : Offrant une API, les modèles GPT peuvent générer du contenu textuel de haute qualité. GPT-3.5 Turbo et GPT-4o sont accessibles gratuitement via ChatGPT pour des tests, permettant aux développeurs de se familiariser avec les capacités de ces modèles avant une intégration complète.
  • Mistral AI : Ce modèle propose une variété de versions open source et commerciales. Les modèles open source tels que Mistral 7B sont idéaux pour les projets nécessitant un haut niveau de personnalisation sans coût élevé.

Reconnaissance vocale, homme réalisant une recherche par commande vocale

La reconnaissance vocale et la synthèse vocale

La reconnaissance vocale permet d’améliorer l’accessibilité et l’interaction utilisateur. Elle effectue la transcription automatique de discours, la commande vocale, et l’ajout de sous-titres.

Que faire ?

Soit vous souhaitez améliorer l’accessibilité de vos outils (et c’est une très bonne intention mais c’est un peu limité), soit vous souhaitez permettre aux utilisateurs de contrôler des applications ou des appareils par la voix. Et ça, on peut dire que c’est un domaine tout neuf ! On pourrait tout à fait imaginer remplacer un fastidieux formulaire de rapport d’intervention (avec un gros formulaire au format mobile) par une vraie discussion vocale homme-machine : 

“ Bonjour Jean-Paul, vous êtes bien à tel endroit ? (le mobile est géolocalisé) 

  • Oui, 
  • Vous avez effectué un remplacement du moteur auxiliaire ? (l’application dispose de la liste des interventions)
  • Finalement, non, il y avait juste un fusible à changer
  • ….”

On n’est plus si loin de la Science-fiction !

Comment faire ?

  • Google speech-to-text ou text-to-speech : Avec une API supportant 165 langues, ce service est parfait pour les applications globales. Il propose des modèles spécialisés pour différents types d’audio, comme les appels téléphoniques ou le secteur médical.
  • Whisper : Ce modèle open source de reconnaissance vocale offre une API flexible et fonctionne avec des fichiers et des prompts optionnels, facilitant son intégration dans divers systèmes.
  • TTS (Text-to-Speech) : Ce modèle propose des API pour convertir des textes courts (jusqu’à 4096 caractères) en audio, avec plusieurs choix de voix, idéal pour les notifications ou les assistants personnels.

Analyse de documents

L’IA peut automatiser l’analyse et l’extraction de données à partir de documents, c’est pas mal lorsque vous devez traiter une grande quantité de documents.

Que faire ?

  • Automatiser l’extraction de données de factures, contrats, et autres documents peut considérablement réduire les erreurs et le temps de traitement si vous devez les intégrer dans votre système de gestion.
  • l’IA peut aussi faciliter la recherche d’informations spécifiques dans une grande base de documents (vous pouvez aussi réfléchir à comment générer des documents spécifiques – cf partie 1).

Outils pour l’analyse de documents

  • Document AI : Un outil spécialisé dans l’extraction de données et la classification de documents. Il permet d’automatiser des tâches répétitives et de gagner du temps dans la gestion des documents.

Un exemple concret

Un exemple concret d’intégration de l’IA est la réalisation d’une application de gestion de documents, (projet imaginé par OpenAI). Cette application utilise l’IA pour remplir automatiquement les informations des documents téléchargés (nom, description, type, mots clés) et dans une version avancée, elle pourrait permettre de rechercher des informations sur l’ensemble des fichiers, offrant une gestion documentaire intuitive et efficace :

  • Remplissage automatique : Utilisation de l’IA pour extraire et remplir les informations des documents téléchargés.
  • Requête et recherche : Capacité à rechercher et à requêter des informations spécifiques à travers tous les documents, facilitant ainsi la gestion et l’accès aux données.

Conclusion

Intégrer l’IA dans votre projet web présente de nombreux avantages : génération de contenu, reconnaissance et synthèse vocale et analyse de documents. L’IA peut non seulement vous procurer des gains de productivité mais aussi améliorer l’expérience utilisateur. Ces outils se développent très vite et de plus en plus d’API sont disponibles : Google, OpenAI, et Mistral AI…

« Vers l’infini et au-delà ! » En route vers de nouveaux projets !

Un article de Fourkane, développeur chez TCM Lyon

Ce sujet vous intéresse ? Lisez également notre article sur les applications pour l’entreprise de l’Intelligence Artificielle générative.

Quels enjeux technologiques pour le secteur bancaire en 2024 ?

Le Bank Tech Day 2024 est un événement incontournable pour les acteurs du secteur bancaire, réunissant experts, décideurs et innovateurs autour des défis et des opportunités technologiques qui façonnent l’avenir de la finance. Si vous l’avez manqué, voici les principaux enseignements et enjeux technologiques que nous avons retenus : IA !

Bank Tech Day 2024, représentation d'un conseiller bancaire dans un univers fututiste.

L’intelligence artificielle en passe de révolutionner l’expérience client

L’intelligence artificielle (IA) a été au cœur des discussions, notamment pour améliorer l’expérience client. Les banques et les institutions financières investissent en priorité dans l’optimisation des processus KYC (Know Your Customer) et KYB (Know Your Business), ce qui non seulement permet de prévenir les fraudes potentielles mais aussi de se conformer aux lois et réglementations nationales et internationales.

C’est dans ce contexte que des solutions IA sont de plus en plus utilisées pour créer des scénarios prédictifs, et assurer une maintenance continue des données KYC et KYB​ dans le but de mettre en place des dispositifs pour améliorer la satisfaction client

Cependant une grande importance doit être donnée à la qualité des données pour entraîner les différents modèles d’IA afin d’obtenir des résultats pertinents et proposer des services satisfaisants.

Dans une ère où le client peut changer rapidement de banque, intégrer des outils IA permet aussi d’augmenter le conseiller bancaire. Ce n’est pas le futur mais on y est presque :

Traitement et analyse des demandes des clients au téléphone

Au téléphone, une analyse des échanges permettrait de suggérer plus rapidement des solutions en les proposant aux conseillers bancaires. 

Par exemple : suite à la discussion, l’IA propose de noter un RDV dans l’agenda du conseiller bancaire du client, ou il suggère d’envoyer un email au client avec des solutions de financement… 

A la clé : une plus grande efficacité du conseiller, une réduction des temps de formation…

Utilisation de chatbot reposant sur l’IA dans l’espace client

L’IA peut désormais traiter des demandes d’informations très variées tout en proposant une expérience utilisateur d’une grande qualité. Ainsi, le client pourra en une seule question demander une analyse de ses dépenses, poser des questions de facturation où accéder aux informations des produits. Il faut néanmoins rester vigilant sur la fiabilité de l’information et le respect des normes réglementaires. Le chatbot vient ainsi en complément des échanges téléphoniques afin de répondre à une partie des demandes et gagner en efficacité opérationnelle.

Proposer une transcription automatique des réunions

Pour continuer dans la même veine, lors des réunions client, il est possible d’effectuer une retranscription automatique des échanges afin de les synthétiser dans le CRM. Il serait même possible de simplifier les saisies avec les échanges (montant du financement par exemple) voire d’analyser les sentiments des clients pour avoir des indicateurs sur la qualité du service (“big brother is watching you”).

Bank Tech Day 2024 – La DSP3 arrive !

La DSP3, ou Directive sur les services de paiement 3, est un ensemble de nouvelles règles européennes qui visent à rendre les paiements plus sûrs, plus innovants et plus centrés sur le client.

Quels sont les objectifs de la DSP3 ?

  • Sécurité renforcée pour mieux protéger les consommateurs contre la fraude
  • APIs Open banking boosté : L’expérimentation, l’exploitation et l’optimisation des APIs d’Open Bankin pour atteindre la maturité technologique permettant leur ouverture et accessibilité mais aussi leur sécurité.  
  • Lutte contre la fraude optimisée : les acteurs peuvent partager des infos sur les transactions frauduleuses pour mieux les identifier et les bloquer.
  • Protection des consommateurs accrue : plus de contrôle sur leurs données et plus de transparence dans les services de paiement.

Comment s’adapter ? ️

Suite au Bank Tech Day 2024, les acteurs du secteur devront s’appuyer sur des solutions technologiques innovantes telles que l’authentification forte, les plateformes d’open banking sécurisées, les systèmes de détection de fraude basés sur l’IA, et puis surtout des outils de gestion des données robustes. ️

Banking As a Service : les API au coeurs des partenariats entre banque et Fintech

L’ère des APIs permet le développement de nouveaux business models, tels que la Banking-as-a-Service (BaaS) ou Open Banking. Ces modèles favorisent la co-création de valeur avec des partenaires, offrant de nouveaux services aux clients. 

Les APIs facilitent la collaboration entre les grandes banques et les fintechs, permettant une intégration rapide et efficace des nouvelles technologies ou offres. Les API sont aussi la clé de l’utilisation de l’IA à partir des données clients pour proposer des solutions plus pertinentes et adaptées. Évidemment, la mise en œuvre de ces APIs doit respecter les réglementations en vigueur pour garantir la sécurité et la confidentialité des données clients. 

Ce sujet, nous le connaissons bien chez TheCodingMachine. Nous avons eu l’opportunité de mettre en place techniquement de telles solutions notamment en intégrant des solutions comme Bridge ou Ubble au sein des parcours utilisateurs de nos clients.

Quelle banque pour demain ?

Le client est au cœur de la stratégie : l’avenir du secteur se jouera avec les banques qui développent un fort relationnel avec leur client, qui misent sur un accompagnement proactif. Il faut être facilement joignable et offrir un accompagnement à la fois expert et personnalisé à tout moment. Il est estimé que 30% des ventes passeront en 2025 par des leviers digitaux.

Alors, comment faire ? Il faut prioriser la satisfaction client au niveau des innovations et garantir le plus possible une expérience fluide, sécurisée et personnalisée. 

L’avenir de la banque appartiendra certainement à ceux qui sauront placer l’expertise et la confiance au cœur de leur relation client notamment en exploitant à bon escient leurs données à travers les API.

À retenir du Bank Tech Day 2024

Le Bank Tech Day 2024 a mis en lumière les nombreux défis et opportunités technologiques auxquels le secteur bancaire doit faire face : L’IA, la DSP3, la prévention contre la fraude, les business models digitaux, la collaboration avec les fintechs et la confiance client sont les clés pour construire la banque de demain.

Évidemment, si vous souhaitez parler de projets IA, API, relation client et même DSP3, on se tient à votre disposition !

Si ce sujet vous intéresse, lisez également notre article : L’Intelligence Artificielle Générative, quelles applications pour l’entreprise ?

Bonnes pratiques ADR pour la documentation de votre code PHP

Documenter le code est un aspect clé du développement logiciel. C’est essentiel non seulement pour la maintenance mais aussi pour la compréhension du code par d’autres développeurs. Une des méthodes la plus efficace pour documenter est d’utiliser l’Architecture Decision Records (ADR). Cet article explore comment utiliser les ADR pour documenter le code PHP, garantissant ainsi une compréhension claire des choix architecturaux.

Qu’est-ce qu’un ADR?

Un Architecture Decision Record (ADR) est un document qui détaille une décision architecturale importante, incluant le contexte, les alternatives envisagées et les raisons de la décision finale. L’objectif principal d’un ADR est de fournir une archive des décisions prises, permettant ainsi de comprendre pourquoi les choses ont été faites d’une certaine manière.

Pourquoi utiliser les ADR en PHP ?

L’utilisation des ADR en PHP, comme dans d’autres langages de programmation, aide à :

  • Clarifier les décisions prises : Les ADR aident à expliquer pourquoi certaines décisions architecturales ont été prises, ce qui est crucial lors de la revisite ou de la révision du code.
  • Faciliter l’orientation des nouveaux développeurs : Les nouveaux membres de l’équipe peuvent comprendre plus rapidement le projet en se référant aux ADR.
  • Assurer une cohérence du projet : Les ADR aident à maintenir une ligne directrice claire pour le développement futur et les modifications du projet.

Comment Documenter son Code PHP avec des ADR ?

Choix de la Structure des ADR

Chaque ADR doit suivre une structure claire pour assurer la consistance. Une structure type comprend (bon ca reste simple) :

Titre : Doit clairement refléter la décision prise.
Statut : Par exemple, proposé, accepté, rejeté, déprécié, etc.
Contexte : La description du problème que la décision vise à résoudre.
Décision : La description de la décision architecturale prise.
Conséquences : Les conséquences de la décision, y compris les avantages et les inconvénients.

Intégration des ADR au Workflow de Développement

Les ADR doivent être considérés comme une partie intégrante du processus de développement. Ils doivent être :

  • Créés et mis à jour par les développeurs : Chaque fois qu’une décision significative est prise, un ADR doit être rédigé ou mis à jour.
  • Revus par l’équipe : Les ADR doivent être revus par les pairs pour garantir qu’ils expliquent la décision et son contexte.
  • Accessibles : Les ADR doivent être stockés dans un répertoire accessible à toute l’équipe, souvent à côté du code dans le système de contrôle de version.

Exemple d’un ADR pour un Projet PHP

Titre : Utilisation de Laravel pour le Projet X
Statut : Accepté
Contexte : Nous avons besoin d’un framework robuste qui facilite la rapidité de développement, la maintenance et qui est largement adopté.
Décision : Utiliser Laravel comme framework principal pour le Projet X en raison de son large écosystème, de sa documentation exhaustive, et de sa grande communauté.
Conséquences : Cette décision permet une mise en œuvre rapide des fonctionnalités grâce aux nombreux paquets disponibles. Cependant, cela nous lie à la philosophie et à la structure de Laravel, ce qui peut limiter certaines options d’architecture spécifique.

Conclusion

Documenter les décisions architecturales en utilisant les ADR dans les projets PHP est une pratique qui renforce la transparence et améliore la gouvernance du projet. Cela permet une meilleure compréhension des choix architecturaux, facilitant ainsi la maintenance et l’évolution du système. En intégrant les ADR dans les pratiques de développement quotidien, les équipes peuvent garantir que le contexte et les justifications des décisions prises restent accessibles et compréhensibles pour tous les acteurs du projet.

Projet terminé : Organiser une rétrospective efficace

Parlons un peu du post-mortem ! 💀

Vous venez de réaliser un super projet, il a été mis en production et la phase de garantie est terminée ! Vous vous en souviendrez longtemps, que de beaux souvenirs partagés tous ensemble autour de ce sujet passionnant… Quel dommage qu’il faille à présent passer à autre chose !
Cela vous paraît absurde ? Ça tombe bien, nous aussi !
Et si on parlait un peu de la réunion de post-mortem ?

achèvement d’un projet

Le terme “post-mortem” est-il le terme adéquat ?

👩‍🏫 Le point scolaire

L’expression “post-mortem” vient du latin “post” qui signifie “après” et “mortem” qui signifie “mort”. Donc la réunion de post-mortem est une réunion censée se tenir “après la mort” du projet.
Mais, dans le contexte du web, lorsqu’un projet est achevé, peut-on vraiment parler de la mort de ce projet ?

A quel moment un projet est-il achevé ?

Déjà, il est important de bien différencier l’achèvement d’un projet et l’interruption d’un projet :

  • Un projet est achevé lorsque toutes les phases sont terminées.
  • Un projet est interrompu lorsqu’on décide de le stopper définitivement au milieu ou à la fin de sa réalisation pour une raison ou une autre.

L’appellation “post-mortem” peut donc avoir du sens après l’interruption d’un projet. Après l’achèvement, en revanche, peut-on réellement parler de la mort du projet ?

De notre point de vue, la vie d’un projet continue bien après sa mise en production ! C’est à ce moment-là que les retours des premiers concernés commenceront à remonter car la solution commencera à être réellement éprouvée et les utilisateurs pourront évaluer sa pertinence dans le contexte de leur problématique métier.
Chez TCM, on préfère parler de rétrospective.

Quel est l’objectif de la rétrospective d’un projet ? 🎯

La rétrospective d’un projet est axée autour de 4 points clés :

  • Évaluer le déroulement du projet
  • Discuter des performances de la solution
  • Explorer les perspectives d’évolution
  • Mettre en lumière les points positifs à reproduire et les erreurs à éviter pour la suite

Qui participe à la rétrospective d’un projet ?

Pour déterminer les personnes qui doivent participer à la rétrospective d’un projet, vous pouvez vous poser les questions suivantes :

  • Quelles sont les différentes parties prenantes du projet ?
  • Qui a travaillé à sa réalisation ?
  • Qui va utiliser le projet ?

Chez TCM, nous avons l’habitude de faire participer au moins l’une des personnes suivantes :

  • Un référent technique : une personne qui a participé au développement du projet et qui connait la technique et les défis qu’ont rencontrés les développeurs
  • Un référent gestion de projet : Une des personnes qui ont planifié, coordonné et supervisé le projet
  • Un référent commercial : La personne qui a été le premier contact entre TCM et l’instigateur du projet
  • Le client : Une personne qui est à l’origine du projet

Qu’aborde-t-on lors d’une rétrospective?

Présentation des participants

La première chose à faire est de prévoir un moment pour que chaque participant à la réunion se présente, il est possible que certains des intervenants ne se connaissent pas entre eux et cette présentation permet à chaque participant de connaître ses interlocuteurs et le rôle de chacun dans cette réunion.

Exposition des objectifs de la réunion

Il faut ensuite rappeler les objectifs de la réunion : Pourquoi est-ce qu’on a réuni tout le monde ? En quoi consiste cette réunion ?

Rappel du contexte du projet

Certains intervenants peuvent travailler sur de nombreux sujets en parallèle, rappeler le sujet permet à tout le monde de savoir précisément de quoi on traite.

Déroulement du projet

Donner un aperçu de la manière dont s’est déroulé le projet :

  • Quelles ont été les différentes phases ?
  • Le planning a-t-il été respecté ? Y-a-t-il eu de l’avance ou du retard ? Pour quelles raisons ?
  • Comment le projet a-t-il été géré ?

Intégrer des statistiques représentant le travail abattu peut également être intéressant.

Performance de la solution

Ce point est très important. Évaluer la performance de la solution apportée va permettre de déterminer si vous avez répondu correctement au besoin. Pour ce faire, on peut suivre les étapes suivantes :

  • Rappeler les besoins définis au départ
  • Montrer la solution technique mise en place pour y répondre
  • Déterminer si la solution répond aux attentes et donner des éléments chiffrés sur l’utilisation du projet

Événements marquants

Essayer de mettre en lumière les différents points forts et challenges que vous avez relevés durant le projet

Choses à reproduire ou à éviter

Et si un jour vous deviez refaire un nouveau projet avec la même équipe ou bien faire évoluer le produit actuel, quels sont les points intéressants que vous aimeriez refaire de la même manière ? Quels sont les points à ne surtout pas reproduire ? Pensez à recueillir le ressenti général des équipes, même si les personnes en question ne participent pas à la réunion.

Perspectives d’évolution

Déterminer les évolutions qui pourraient être ajoutées au projet et solliciter les utilisateurs finaux sur leur utilisation de la plateforme.

Inclusion des points transverses

Y-a-t’il des points transverses que vous aimeriez aborder ?
Par exemple : La maintenance du projet.

Étapes suivantes

Quelles sont les étapes suivantes pour le projet ?

Bilan de la réunion

Rappel des points clés évoqués tout au long de la réunion et liste des actions à mener.

Conclusion

La réunion de rétrospective a pour principal objectif de prendre du recul par rapport au travail effectué de manière à continuer la collaboration de la meilleure façon possible. La rétrospective ne vise pas à clôturer le projet, mais bien à le faire vivre et évoluer en tirant un enseignement bénéfique des expériences passées dans un processus d’amélioration continue.

Mode hors ligne : Développez une appli qui n’est jamais limitée

Imaginez une application mobile révolutionnaire, une sorte de génie numérique qui réalise vos désirs les plus fous : elle vous prépare le café matinal, planifie votre journée, vous maintient connecté•e avec vos proches, effectue vos courses, et même – pourquoi pas – elle pourrait se rendre au travail à votre place lorsque la fatigue se fait trop sentir ! Après plusieurs mois d’utilisation, elle est devenue votre indispensable compagnon numérique.

Pourtant, un jour, sans crier gare, votre connexion internet vous abandonne, le wifi se met en grève et vous vous retrouvez coincé•e avec un réseau EDGE des plus chaotiques. La machine à café refuse d’obéir, votre agenda se perd dans les méandres du cyberespace, les conversations avec vos proches ont disparu et vos courses ne se commandent plus automatiquement. Un écran blanc s’affiche, suivit d’un chargement infini… bref, l’application cesse de répondre… Tout semble s’effondrer à cet instant précis. Une application si merveilleuse, si vitale, devient soudainement inutilisable à cause d’une simple coupure d’internet ?

Découvrons ensemble comment cette application prétendument « géniale » peut réellement le devenir, même lorsque la connexion internet flanche.

L’expérience utilisateur au coeur des applications

Lors de la création d’une application mobile, tout tourne autour de l’expérience vécue par les utilisateurs•rices. C’est ce qui guide chaque étape de réflexion. L’exemple précédemment évoqué est extrême, mais il illustre de manière saisissante les conséquences d’une défaillance du réseau. Cependant, des situations plus concrètes peuvent également mettre en lumière l’importance cruciale du mode hors ligne.

Imaginons une application où des employés•ées doivent badger un QR Code pour débuter des missions à des endroits spécifiques. Si ces QR Codes sont placés dans des zones de réseau instable, comme des zones géographiques mortes ou des bâtiments avec une mauvaise réception, l’utilisateur•rice se retrouvera confronté•e à la frustration de voir l’application, vantée par ses supérieurs, dysfonctionner.

Les connexions internet instables ne se limitent pas uniquement à des situations isolées. Elles peuvent provenir de divers facteurs, tels que des connexions limitées (dans des hôtels ou à l’étranger), des pannes de courant, des conditions météorologiques extrêmes, ou même une mauvaise couverture de la part du fournisseur de services.

Lorsque nous entreprenons la création d’une application mobile, la considération de la perte ou de la mauvaise qualité de connexion doit être au cœur de chaque fonctionnalité développée. Cela garantit une expérience optimale de l’application, même lorsque les conditions de connectivité sont difficiles.

Le mode hors ligne vous dites ?

Implémenter le mode hors ligne dans une application mobile permet à celle-ci de continuer à fonctionner et à offrir certaines fonctionnalités, même lorsque l’appareil n’a pas ou peu d’accès à Internet. Cependant, assurer une utilisation continue de l’application ne relève pas de la magie. Certaines fonctionnalités ne peuvent pas fonctionner sans connexion internet, mais il existe diverses façons de gérer la perte de connexion, comme nous l’illustrerons ci-dessous.

Par exemple, une messagerie en temps réel nécessite une connexion active pour fonctionner pleinement. Si ce sujet vous intéresse, nous avons un article ici : Le temps réel en web, quand chaque seconde compte ! Toutefois, même dans ces cas, des solutions alternatives peuvent être envisagées pour améliorer l’expérience utilisateur•rice malgré l’absence de connexion.

Comment améliorer concrètement l’expérience utilisateur•rice grâce au mode hors ligne ?

Prenons pour exemple une application de messagerie instantanée élémentaire. Dans cette application, le premier écran présente la liste des conversations (1), et dès qu’on sélectionne l’une d’elles, l’ensemble de la conversation s’affiche (2).

image6
image12

Si nous n’avions pas pris en compte les futurs utilisateur•rices, nous aurions supposé que tout fonctionnait parfaitement : le premier écran aurait simplement envoyé une requête via le réseau Internet pour récupérer mes conversations. Une fois la réponse obtenue, elle aurait été affichée dans l’application et voilà, affaire réglée. Cependant, le problème survient si, pour l’une des raisons évoquées précédemment, le réseau venait à disparaître. Dans cette situation, l’application continuerait à charger indéfiniment jusqu’à ce qu’un message d’erreur peu explicite apparaisse du genre “Network error”…

Voyons comment le mode hors ligne peut concrètement enrichir l’expérience utilisateur•rice dans ce contexte spécifique :

La notification visuel

La première étape consiste à informer l’utilisateur•rice que son expérience est altérée et pourquoi. Cela permet d’éviter les frustrations découlant de l’utilisation d’une application dans des conditions où elle ne peut fonctionner pleinement. Nombreuses sont les applications qui ne peuvent pas être utilisées à leur plein potentiel hors connexion. C’est le cas de YouTube, qui bloque la lecture des vidéos, ou de Messenger, qui affiche un bandeau en haut de l’application pour signaler l’absence de connexion. Pour autant, personne n’a l’impression que l’application “bug”.

En ce qui concerne notre application de messagerie, concentrons-nous sur la première interface : les conversations sont stockées dans une base de données, mais je ne peux pas accéder à cette base sans connexion Internet. Ainsi, je pourrais envisager d’afficher une erreur claire et précise, à la manière de YouTube, décrivant explicitement le problème rencontré :

image5

Il est crucial d’employer des termes appropriés, simples et compréhensibles, sans recourir à un langage technique, pour garantir une explication claire, directe et précise.

Ne pas bloquer l’utilisateur

Dans le contexte de notre application, la notification précédente bloque entièrement l’accès aux discussions (sans affecter le reste de l’application). Cependant, une meilleure approche permettrait d’offrir une notification moins intrusive et agressive, tout en donnant à l’utilisateur•rice la possibilité d’accéder à quelques fonctionnalités supplémentaires comme pouvoir visualiser des conversations.

image4
image2
image10

Dans le cas d’une connexion instable, il est préférable d’utiliser une notification visuelle impactante mais non intrusive lorsque la connectivité réseau fluctue plutôt qu’un effet stroboscopique entre l’écran chargé et l’écran d’erreur.

De plus, lors du chargement des données, il est préférable d’éviter les chargements en plein écran qui immobilisent l’utilisateur•rice. À la place, on privilégie les “écrans squelettes” (skeleton loader), qui représentent des espaces (souvent animés) réservés pour les informations en cours de chargement. Un écran squelette imite la structure et l’apparence de la vue complète, donnant ainsi un aperçu visuel du contenu en attente de chargement dans chaque bloc, que ce soit une image, du texte ou tout autre type d’information.

image7
image11

Il est toujours possible d’offrir une façon originale de notifier l’utilisateur que l’application passe en mode hors ligne en offrant un nouveau visuel à l’application. Par exemple passer l’application en noir et blanc :

image3
image9
image1

Le stockage

Pour résoudre la problématique précédente, une solution consisterait à stocker localement  les 10 derniers messages des 10 dernières conversations sur le téléphone. Ainsi, même en cas de connexion faible ou inexistante, l’utilisateur•rice ne serait pas bloqué•e.

Le stockage est une solution efficace pour améliorer l’expérience utilisateur en cas de perte de connexion. Dans notre application, elle permettrait aux utilisateurs•rices de voir les derniers messages d’une conversation comme par exemple ou se situe l’adresse du restaurant où ils ont rendez-vous même si le réseau les a abandonnés.

Cette approche assure une utilisation continue et pratique de l’application, malgré les éventuelles perturbations de la connectivité.

Soumission différée

Une autre façon d’améliorer l’expérience utilisateur est de lui offrir la possibilité d’écrire et d’envoyer un message même en l’absence de connexion. L’utilisateur•rice peut accéder à une conversation, y rédiger un message et l’envoyer. Une notification visuelle claire indiquera que ce message sera transmis dès que le réseau sera rétabli. Cette fonctionnalité garantit une continuité d’utilisation de l’application sans interruption, même lorsque la connexion est instable.

image8

C’est tout ?

Evidemment que non ! En effet, de nombreuses méthodes permettent d’améliorer considérablement une application mobile même lorsque la connexion réseau n’est pas optimale. Nous avons exploré les principaux éléments à prendre en compte lors de la conception d’une application de qualité autour d’un exemple des plus simple. Toutefois, les solutions sont variées et l’innovation persiste à découvrir des techniques avancées pour enrichir davantage l’expérience utilisateur•rice.

Il faut garder en tête que, faire simple et comprendre ce que l’utilisateur•rice va utiliser ou pas est le plus important. Nous pourrions prendre l’exemple d’applications plus complexes comme Google Docs où il est possible de collaborer sur un document en hors connexion et où la logique de fusion des versions à été faite de la plus simple des manières. En effet, le cas d’utilisation reste des moins fréquent, les équipes de Google ont donc opté pour une solution “simple” qui est de fusionner l’ensemble du texte modifié par les auteurs•rices au risque que le texte devienne incompréhensible. Il suffira ensuite de reformuler l’ensemble. Cela évite les pertes de contenu, simplifie le code source et sa compréhension et optimise le temps de développement pour répondre à de vraies problématiques utilisateurs•rices.

Les possibilités sont vastes, mais chaque innovation requiert une exigence, une expertise technique et une connaissance des besoins utilisateur•rice. Chez TheCodingMachine, nous aimons relever ces défis et nous y confrontons avec passion et expertise !

Que peut-on en conclure ?

Le mode hors ligne représente un défi technique avec ses petits challenges si l’on souhaite innover. Cependant, arriver à produire une application de qualité qui répond aux exigences actuelles des consommateurs•rices d’application mobile n’est pas difficile tant que ces derniers•ères sont placés•ées au cœur de la conception.

Auteur: Jérémy Dollé