Pourquoi Invoice Ninja
Je cherchais une solution auto-hébergée, moderne, avec portail client, API, contrôle des données et base technique solide. Invoice Ninja répondait déjà très bien à ces critères.
Étude de cas personnelle
Invoice Ninja reste la solution de base de devis et facturation que j'utilise au quotidien. Je ne suis pas son auteur et je ne le revends pas. Cette étude de cas explique comment j'ai construit des modules Laravel, React et WebSockets autour de cette excellente base open source pour répondre à mes besoins de développeur web freelance.
Je cherchais une solution auto-hébergée, moderne, avec portail client, API, contrôle des données et base technique solide. Invoice Ninja répondait déjà très bien à ces critères.
Recréer toute la facturation aurait ajouté du risque inutile. Le bon choix était de respecter le socle existant et de concentrer l'effort sur les besoins métier spécifiques.
Le défi principal n'était pas d'ajouter des écrans. C'était de construire une architecture modulaire capable de survivre aux futures mises à jour d'Invoice Ninja.
Évolution du besoin
Au fil des mois, l'outil est devenu le point d'entrée naturel de la relation client. J'y ai ajouté les briques nécessaires pour suivre les projets, maintenir les applications, préparer les échanges, centraliser les documents et sécuriser certaines informations sensibles.
Vue synthétique des informations utiles: facturation, documents, maintenance, tickets et éléments récents.
Applications maintenues, interventions, contrats, alertes, recommandations, vulnérabilités et contrôles de sauvegarde.
Un espace client qui ne se limite plus aux PDF de factures mais centralise les échanges, documents, maintenances et décisions dans un seul endroit.
Notes de réunion collaboratives en temps réel via WebSockets, pour garder un historique exploitable au même endroit que le reste du suivi client.
Partage ponctuel d'informations sensibles: la clé reste dans le fragment d'URL et le déchiffrement se fait dans le navigateur client.
Documents de vigilance, statuts, récupération automatisée et préparation progressive aux contraintes françaises.
Demandes clients avec contexte technique guidé, messages et suivi dans le même environnement.
Synchronisations, API REST, intégration Abby, automatisations et notifications selon les besoins métier.
Scripts, GitLab CI, Docker/DDEV et organisation des assets pour garder un workflow reproductible.
Architecture
Chaque grande fonctionnalité vit dans un module Laravel isolé: provider, routes, migrations, modèles, services, vues ou composants React. Cette séparation limite les conflits avec le cœur Invoice Ninja et rend les mises à jour plus maîtrisables.
Laravel était le choix naturel car Invoice Ninja repose déjà sur ce framework côté backend. Les nouveaux modules s'intègrent donc aux conventions existantes: services, policies, événements, notifications, commandes, migrations et tests.
React n'a pas été choisi par effet de mode. Invoice Ninja utilise déjà React pour son administration; suivre cette direction permet d'obtenir une interface homogène et un pipeline d'assets cohérent avec le projet.
Captures anonymisées
Les données visibles ont été remplacées dans le DOM avant capture afin de montrer les écrans sans exposer de client réel.
Ce projet montre comment une base open source solide peut devenir un outil métier complet lorsqu'elle est comprise et respectée. Invoice Ninja reste le socle de facturation. Mon travail se situe autour: architecture modulaire, Laravel, React, WebSockets, automatisations, UX et intégrations adaptées à mon quotidien de freelance.
Pour un client, l'enseignement est simple: je sais reprendre une application existante, analyser son architecture, l'étendre proprement et préserver sa maintenabilité.