Réalisations
Ce qui a été livré, et pour qui
Intégrateur et développeur ERP open source. Je conçois, développe et déploie des systèmes de gestion basés sur Dokos, ERPNext et le framework Frappe — du développement applicatif jusqu'à la mise en production, avec les intégrations que cela suppose : prestataires de paiement, banques, logiciels de caisse, plateformes de facturation électronique, outils métier déjà en place. Partenaire officiel Dokos, contributeur régulier aux projets Dokos, Dodock, ERPNext et Frappe.
01 — En bref
Le travail en chiffres
100+
Contributions fusionnées sur Dokos Bookings, dont je suis le contributeur principal
60
Contributions fusionnées sur Dokos, l'ERP
26
Contributions fusionnées sur Dodock, le framework
17
Instances Dokos déployées sur le seul réseau AFPA
13
Contributions fusionnées sur les applications de facturation électronique
9
Contributions fusionnées sur ERPNext et Frappe
Langages et technologies — Python, JavaScript, Vue 3, MariaDB, Redis, XML/XSD, Docker, Playwright, Nuxt.
Chiffres arrêtés au 17 août 2026.
02 — Déploiements clients
Des systèmes en production, pas des maquettes
AFPA · 17 tiers-lieux
Un réseau entier déployé simultanément
Déploiement de Dokos sur les 17 tiers-lieux du réseau de l'AFPA, de façon automatisée et simultanée. Le paramétrage et les personnalisations communes sont réunis dans une application versionnée, installée sur chaque instance : chaque site part d'une configuration identique et reproductible, et une évolution se propage à l'ensemble du réseau sans reprise manuelle site par site.
Un déploiement en flotte pose des problèmes qu'un déploiement unique ne pose pas : configuration identique et rejouable, montées de version coordonnées, migrations de données idempotentes. C'est le projet qui illustre le mieux ma capacité à industrialiser plutôt qu'à livrer un site à la main.
Le détail technique
Ce que contient l'application versionnée :
- Doctypes métier du réseau — partenaires, solutions, régions, contenus, prestations analytiques, demandes de devis événementiel, documents personnels
- Synchronisation depuis Airtable, avec cache et vues dédiées, pour reprendre les données déjà tenues par le réseau sans double saisie
- API, personnalisations et portails web propres au réseau
- Patches de migration, pour que les instances déjà en service suivent les évolutions du modèle de données
Enercoop Hauts-de-France
Commandes groupées, sur un modèle de financement participatif
Application métier pour la coopérative d'énergie citoyenne. Une commande groupée n'est pas un panier, c'est une campagne : on ouvre une offre sur un produit, avec un objectif à atteindre et une échéance. Les membres s'y positionnent au fil de l'eau. Si l'objectif est atteint avant l'échéance, la commande part chez le fournisseur au tarif de volume ; sinon elle expire et personne n'est engagé.
Le détail technique
Le cycle de vie est modélisé tel quel, avec un statut visible de tous :
| Ouverte | la campagne collecte les engagements |
| Objectif atteint | le seuil est franchi, la commande est viable |
| Complète | l'engagement est clos et la commande passée |
| Livrée | les participants sont servis |
| Expirée | l'échéance est tombée avant l'objectif |
Autour de ce cycle : des pages de campagne publiques, consultables sans compte comme une page de collecte ; un panier en ligne pour se positionner ; l'acceptation des conditions générales au moment de l'engagement ; un circuit d'approbation des demandes, avec un indicateur de celles qui attendent une décision ; des règles d'expédition propres à ce mode de vente ; et un récapitulatif imprimable pour la préparation.
La difficulté de fond est que l'ERP sait vendre à un client. Ici, les engagements de plusieurs dizaines de participants s'agrègent en une commande unique auprès du fournisseur, à un prix qui dépend du volume atteint, puis se redistribuent en autant de livraisons individuelles. Rien dans le modèle commercial standard ne prévoit cet aller-retour, et c'est tout l'objet de l'application.
03 — Dokos Bookings
Refonte complète de l'application de réservation
Contributeur principal de Dokos Bookings, l'application de réservation de l'écosystème Dokos : réservation en ligne en autonomie, crédits prépayés avec gestion FIFO et péremption, abonnements prélevés automatiquement, contrats et adhésions, badges de qualification, remboursement de crédits à l'annulation.
Refonte · dernière version majeure
Trois plans menés de front
Le modèle de données, l'interface du bureau et les tests. Les réservations reposaient sur l'objet Article, hérité de la logique commerciale de l'ERP ; elles reposent désormais sur une véritable ressource réservable. Ce basculement a été conduit par le mainteneur de Dokos. Ma part a été de le faire vivre dans le reste de l'application, et d'amener les instances déjà en production jusqu'à la nouvelle version sans perte.
Barre latérale, avant et après
Deux entrées ont été retirées volontairement : le dépôt de garantie, qui a sa place sur le contrat, et les crédits de réservation, consultables depuis la fiche client. Une barre latérale se juge à ce qu'on y trouve tous les jours, pas au nombre de liens qu'elle affiche.
Le détail technique
Le modèle de données. Sortir les ensembles de produits au profit d'une table de ressources liées, avec son éditeur en cartes et le patch qui migre les configurations existantes ; puis propager le nouveau modèle partout où l'ancien traînait encore — rapport de tarifs, dialogue de réservation d'événement, synchronisation Google Calendar, règles de conversion des crédits. Plus les correctifs de migration, pour que les instances déjà en production suivent sans perte, y compris celles restées sur des noms de doctypes de la version précédente.
L'interface du bureau. Nouvel espace de travail, nouvelle page d'accueil, barre latérale repensée, cartes de synthèse, parcours de prise en main, refonte visuelle des créneaux et des exceptions de disponibilité, assistants guidés pour la création de contrats, fusion des écrans de paramétrage redondants, jusqu'à l'icône de l'application.
Les tests. Une série de suites d'intégration ajoutées en amont de la refonte — système de crédits, planificateur de contrats, cycle de vie des badges, inscriptions aux événements, dépôts de garantie — pour refondre sur un filet plutôt qu'à l'aveugle.
Badges de qualification
Conditionner l'accès à une ressource, et montrer la sortie
Dans un fablab, on ne réserve pas la découpeuse laser sans avoir été formé. J'ai conçu et développé un système de badges qui conditionne l'accès à une ressource, avec deux voies d'obtention au choix du gestionnaire : la réussite d'un cours en ligne, la présence à une session de formation, ou les deux pour le même badge.
Le détail technique
Côté gestion, la présence se valide depuis l'inscription à l'événement ou en lot depuis l'événement lui-même, avec un dialogue qui nomme explicitement le badge sur le point d'être attribué. Le marquage de présence est un champ en lecture seule qu'on ne bascule que par cette action, et le serveur refuse de valider la présence à un événement qui n'a pas encore commencé.
Le compte utilisateur expose une section « Mes badges » avec les dates d'expiration et un avertissement trente jours avant l'échéance. Un badge expiré n'est pas effacé : il reste en historique, et une nouvelle attribution en émet un neuf.
Le système est inspiré de FabManager, avec une différence assumée : FabManager n'ouvre que la voie présentielle, là où le gestionnaire peut ici choisir la formation en ligne, le présentiel, ou les deux.
04 — Facturation électronique
D'un prototype à une solution partagée
La Belgique impose la facturation électronique B2B depuis janvier 2026, via le réseau Peppol. J'ai mené ce passage pour LaVallée, tiers-lieu bruxellois — location de salles, coworking, prestations événementielles sur devis, clientèle mixte particuliers et entreprises.
433 factures transmises · 459 reçues
La chaîne tourne depuis le premier jour de l'obligation
433 factures client transmises sur le réseau Peppol entre le 1er janvier et le 15 août 2026. Le flux entrant est branché et 459 documents fournisseurs ont été reçus, mais leur rapprochement comptable reste manuel — l'intégration automatique n'est pas en place, et je préfère l'écrire que le laisser supposer.
Le déroulé m'intéresse plus que le résultat, parce que c'est là que se joue la décision technique : étude de conformité avant toute ligne de code, prototype de connecteur maison, puis la décision de ne pas le maintenir au profit d'une application libre déjà portée par une autre équipe — et 13 contributions fusionnées pour l'amener au niveau attendu en production.
Le détail technique
1. Étude de conformité, avant toute ligne de code. Statut de l'ERP au regard des obligations comptables et fiscales belges, arbitrage entre développer un connecteur et passer par un intermédiaire, traitement des factures transfrontalières, obligations propres aux ASBL. Sources vérifiées dans le texte de loi.
2. Un prototype, pour comprendre. J'ai développé un connecteur maison entre l'ERP et un opérateur d'accès au réseau. Il fonctionnait, et il m'a surtout appris ce que la chaîne demandait réellement.
3. La décision : ne pas le maintenir. Un connecteur propriétaire, c'est un composant réglementaire dont je serais seul responsable — à suivre à chaque évolution du réseau, des formats et des règles de validation, pour un seul client. J'ai abandonné mon prototype au profit d'une application libre émergente, edocument, portée par une autre équipe et déjà utilisée ailleurs. Moins de code à moi, une charge de maintenance partagée, et une trajectoire qui ne dépend pas de ma disponibilité.
4. Contribuer plutôt que contourner. Cette application n'était pas encore mûre. Plutôt que d'empiler des correctifs locaux chez mon client, j'ai remonté chaque problème en amont : 13 contributions fusionnées sur edocument, edocument_integration et eu_einvoice_peppol. Chacune corrige un problème rencontré en production sur des flux réels, et profite à tous les utilisateurs de ces applications — y compris à moi, la prochaine fois.
Une contribution résume l'ensemble. La première facture de l'exercice part sur le réseau en portant l'identifiant technique de son brouillon au lieu de son numéro définitif. Trois réponses, dans cet ordre : régulariser la situation du client depuis l'interface de l'opérateur, sans écriture fictive dans une comptabilité qui était juste ; vérifier dans le texte ce que la réglementation autorise en pareil cas plutôt que de le supposer ; puis corriger la cause en amont, pour que le problème ne se reproduise ni chez ce client ni chez personne d'autre.
05 — Conformité
Fiscalité et référentiels
Belgium Compliance
TVA et plan comptable belges pour ERPNext
Application de conformité régionale belge, née des besoins du même déploiement. Le périmètre non couvert est documenté explicitement dans le dépôt — limitation de déduction véhicules, OSS/IOSS, régime de la marge, forfait agricole : sur un sujet fiscal, annoncer ce qu'on ne traite pas vaut mieux que de le laisser découvrir.
github.com/maasanto/belgium_compliance
Le détail technique
- Plan comptable minimum normalisé (PCMN), versions commerciale et ASBL, en français et en néerlandais. Intégré en amont dans ERPNext, donc disponible pour tout l'écosystème.
- Catalogue officiel des 30 grilles TVA et correspondance grille par grille avec les taux, y compris l'éclatement des opérations en autoliquidation.
- Génération du fichier XML INTERVAT, validé contre les schémas publiés par le SPF Finances, puis éprouvé sur l'environnement de test du portail avant tout dépôt réel.
- Extraction multi-taux depuis la comptabilité générale, en repartant de la TVA effectivement comptabilisée plutôt que d'un recalcul parallèle — la seule méthode qui résiste à un contrôle.
Ajouté en amont dans ERPNext au passage : les taux de TVA belges à 0 % et 6 %.
NF525 · Dokos SAS
Accompagnement d'une certification
J'ai accompagné Dokos SAS dans sa certification NF525 sur deux volets : la rédaction des procédures qualité exigées par le référentiel, sur leur propre ERP, et la préparation de l'environnement de test présenté à l'auditeur. L'audit s'est tenu, l'avis est favorable ; le certificat n'est pas encore délivré.
Une certification logicielle ne s'obtient pas qu'en écrivant du code : il faut documenter les processus, et surtout pouvoir démontrer à un tiers, sur une instance qui tourne, ce que le référentiel exige — inaltérabilité, sécurisation, conservation, archivage.
Le détail technique
L'environnement est monté dans l'application de démonstration de Dokos : module de certification caisse installé et configuré (licence, SIREN, enregistrement auprès du serveur d'archivage sécurisé), profil de point de vente, format de ticket, articles et atelier permettant de dérouler des ventes réelles, et intégration à la chaîne d'intégration continue pour que la démo parte toujours d'un état vérifié. Le paramétrage est idempotent : il se rejoue autant de fois que nécessaire avant le passage de l'auditeur.
06 — Intégrations
Paiement, banque et logiciels de caisse
Lyra · Dokos Payments
Connecteur de paiement, de l'encaissement au rapprochement
Passerelle de paiement Lyra (API REST V4) pour l'application Payments de Dokos. La même intégration dessert Lyra Collect, PayZen et Systempay, qui partagent la plateforme technique : seule l'URL de base change.
Lyra devient un moyen de paiement proposé au moment de régler : le client part sur la page de paiement hébergée, coordonnées pré-remplies depuis sa fiche contact, puis revient sur une page de confirmation du site. Le checkout d'un abonnement enregistre au passage la carte, ce qui permet de débiter les échéances suivantes sans personne devant l'écran. Remboursements inclus.
Second volet : l'import du fichier de règlement transmis par Lyra, qui alimente directement un versement dans l'ERP et permet de rapprocher ce que la banque a effectivement viré des paiements encaissés, commissions comprises.
En développement — branches publiques sur gitlab.com/antoine.maas/payments
Suivi des paiements · contribution fusionnée
Refonte de l'expérience comptable
Quand un paiement en ligne ne se solde pas, la personne qui doit comprendre pourquoi est au service comptable — et la réponse était enfouie dans des documents techniques, dont un réservé aux administrateurs. Concrètement : appeler un développeur pour savoir si un client a payé.
J'ai remonté tout le cycle de vie du paiement dans l'onglet Encaissement des factures, commandes et abonnements.
Contribution fusionnée dans Dokos · MR !11110
Le détail technique
Le message dit quoi faire, pas ce qui s'est passé. Sur l'exemple ci-dessus, la passerelle n'a jamais confirmé et les vérifications automatiques se sont arrêtées. Le message n'annonce donc pas « échec » — il avertit que la somme a peut-être déjà été encaissée et invite à vérifier avant de redemander le paiement. C'est exactement l'erreur coûteuse qu'un comptable pressé commettrait, et le bouton d'action ouvre le signalement de rapprochement plutôt que de relancer le client.
Une seule lecture pour toutes les passerelles. L'affichage ne s'appuie que sur le socle commun aux passerelles de paiement de Dokos — Stripe, GoCardless, PayPal, Braintree, Stancer, HelloAsso, Lyra. Aucun cas particulier par prestataire à écrire ni à maintenir, et une passerelle ajoutée demain hérite du même suivi sans une ligne de plus.
SEPA · rapprochement bancaire
Sur le cœur financier de Dokos
Correctifs et améliorations sur les prélèvements et le rapprochement, là où une erreur se traduit par une remise rejetée ou un compte qui ne tombe pas juste.
Le détail technique
- Correction de la date de prélèvement SEPA (ReqdColltnDt, message ISO 20022 pain.008), qui reprenait une date inadaptée et faisait rejeter des remises.
- Résolution d'un interblocage à la génération des fichiers de prélèvement.
- Rapprochement des paiements Stripe SEPA, dont les transactions de type payment n'étaient pas appariées.
- Rapprochement bancaire : colonnes configurables, présélection du compte par défaut, correspondance des références insensible à la casse, correction du filtre par période, traitement des avoirs.
- Synchronisation bancaire automatique planifiée sur une instance en production, là où l'import ne se déclenchait que manuellement.
POS Import · Hiboutik · Restomax
Reprise de données depuis des logiciels de caisse
Import quotidien des ventes d'un logiciel de caisse vers ERPNext, avec correspondance d'articles, comptes de produits paramétrables par article, génération des règlements et absorption des écarts d'arrondi entre factures et paiements.
github.com/maasanto/pos_import
Le détail technique
Sur le connecteur Dokos Hiboutik, j'ai mené le premier déploiement en clientèle et contribué au code à cette occasion : synchronisation des clients, et statut de règlement erroné sur les factures validées sans paiement.
07 — Contributions
Ce qui finit dans l'écosystème plutôt que dans une surcouche
| Projet | Rôle | Contributions fusionnées |
|---|---|---|
| Dokos Bookings | contributeur principal | 100+ |
| Dokos | contributeur régulier | 60 |
| Dodock (framework) | contributeur | 26 |
| ERPNext | contributeur | 5 |
| Frappe et apps | contributeur | 4 |
Travaux notables sur Dokos : complétion des domaines Comptabilité, Stocks, Fabrication, Qualité, Actifs et Achats ; formats d'impression standard ; tableaux de bord de liste sur les documents commerciaux ; corrections du moteur d'abonnements (facturation anticipée, recalcul des échéances, historique du MRR) ; enrichissement automatique des fiches tiers via Pappers ; traductions françaises.
08 — Outillage
Qualité et automatisation
- Harnais de tests end-to-end Playwright pour instances Dokos : scénarios de référence et exploration automatisée, avec données de test isolées.
- Outillage de bench basé sur les worktrees Git, pour développer et tester plusieurs branches en parallèle sans dupliquer l'environnement.
- Dokos AI — contributions à l'intégration de l'IA dans l'ERP.
- Messagerie et collaboration intégrées à l'ERP (Raven, Gameplan), avec bots et automatisations.
- Infrastructure : Docker, Frappe Cloud, déploiements auto-hébergés, sauvegardes et restaurations, migrations de version.
- Associations et communautés : fichier adhérents et cotisations, événements et inscriptions en ligne, blog et newsletters automatisées ; auteur de Tropisme, application de gestion d'événements pour Dokos.
09 — Références
Ils m'ont fait confiance




10 — Méthode
Comment je travaille
Ingénieur de formation. Quatre principes constants, qui expliquent la plupart des décisions décrites plus haut.
Comprendre avant de coder
Un symptôme n'est pas une cause. Je remonte au point où le problème se produit réellement plutôt que de neutraliser l'endroit où il se voit.
Écrire le moins de code possible
Une application libre déjà maintenue par d'autres vaut mieux qu'un composant maison dont je serais le seul responsable. J'ai abandonné mon propre prototype de facturation électronique pour cette raison, et je referais le même choix.
Corriger en amont quand c'est possible
Une bonne part de mon travail finit dans Dokos, Dodock, ERPNext ou les applications que j'utilise, plutôt que dans une surcouche client : le correctif est maintenu par la communauté, et la mise à jour suivante ne le casse pas.
Dire ce qui n'est pas couvert
Sur un sujet réglementaire ou fiscal, le périmètre exclu se documente au même titre que le périmètre traité.
Parlons de votre projet
Un échange de 30 minutes pour cadrer votre besoin, sans engagement.
Prendre rendez-vous