· Agence Insolence

Dashboard pour agence de formations

Pour améliorer la gestion de projet de l'agence, j'ai transformé des Excel de centaines de lignes en une base de données sur Notion qui alimente une application web.

Développement web Next.jsNotion APIReactTailwind

Jusqu’à lors, l’agence utilisait des feuilles Excel pour gérer l’avancement des cours, le recrutement des auteurs, etc. C’est un bon moyen de créer un environnement de travail sans compétences en développement, mais alors que les tâches se complexifiaient et le nombre de cours augmentait, manipuler ces tableurs devenait contraignant et source d’erreurs.1

C’est une sorte de cercle vicieux : plus on s’investit dans une telle méthode de travail, plus elle est difficile à maintenir avec des données difficiles à extraire. Il est donc primordial de penser à la structure des données tôt dans un projet pour éviter ces problèmes. En arrivant dans l’entreprise, j’ai proposé de mettre en place des bases de données relationnelles sur Notion pour simplifier la gestion de projet. Notion est un outil répandu et intuitif qui permet des requêtes avancées, pour obtenir des vues filtrées qui augmentent nettement la productivité.

Cependant, les outils de gestion comme Notion ou Jira ne peuvent pas tout faire par eux-mêmes. J’ai étendu nos possibilités en développant une application web (avec Next.js, SWR et l’API de Notion) pour automatiser la communication avec nos partenaires, en produisant des rapports élégants mis à jour en direct :

Le serveur Node.js filtre certaines données sensibles, ce qui n’est pas possible de base avec Notion. Ainsi, il est entièrement sûr de délivrer le dashboard au client pour lui partager l’avancement.

Chaque auteur dispose d’un lien unique lui permettant de visualiser un récapitulatif clair et synthétique de toutes les informations le concernant, sans qu’il n’ait besoin de gérer un compte ou d’entrer un mot de passe. Ainsi, le système est fiable et intuitif même pour les allergiques à l’informatique.

Difficultés

L’API de Notion est particulièrement lente à produire une réponse. Ce n’est pas forcément un problème dans des cas de figure classiques, mais ici, j’ai parfois besoin de charger plus de 500 cours, qui sont autant d’entrées dans la base de données, pour calculer des statistiques globales. Cela peut parfois prendre plus de 5 secondes, ce qui altère l’expérience de navigation, et me fait dépasser la limite maximale de durée pour une fonction d’API sur Vercel, l’hébergeur du site.

Pour pallier à ce problème, j’ai séparé les requêtes de manière à pouvoir afficher les résultats progressivement. Grâce à SWR, j’envoie plusieurs petites requêtes asynchrones et je rafraîchis les données du tableau en direct. Ainsi, l’outil fonctionnera toujours avec de très nombreux cours, sans aucune maintenance de la part de l’agence.

Notes

  1. Dans un tableur Excel, les données identiques ont tendance à être dédoublées, et les erreurs humaines difficiles à détecter. Par exemple, deux textes en apparences similaires pourraient utiliser un caractère différent pour l’apostrophe (' est différent de ) et donc être différenciés par le programme.