Le projet Tango.js


La problèmatique initiale

Depuis 2006, en tant qu'éditeurs de progiciels de gestion, de facturation et de comptabilité agricole, notre entreprise Neologik s'engage dans une constante évolution et expansion de ses solutions logicielles.

Dans un contexte réglementaire exigeant, l'intégration de certaines nouvelles technologies dans des applications existantes peut rapidement se transformer en réel défi.

Face à un environnement en perpétuelle innovation, et aux demandes croissantes de nos clients et partenaires sur de nouvelles fonctionnalités (cartographie, web, mobilité connectée/déconnectée, dématérialisation, API tierces, échanges avec d'autres logiciels, base de données ou matériels, gestion documentaire...), nous avons adopté différentes technologies de développements et méthodes de déploiement au sein de nos architectures logicielles.

Ces choix d'intégration, souvent effectués de manière pragmatique sur des aspects techniques encore peu matures, engendrent généralement des impacts significatifs à prendre en considération :

  • duplications et redondances de code
  • nécessité d'acquérir et maitriser de nombreuses nouvelles compétences (langages, environnements, plateformes...)
  • processus de développement, de déploiement et de maintenance disparates.


Un recherche de solutions basées sur des besoins réels

En 2018, en réponse à une nouvelle demande client, nous avons entrepris une refonte complète de notre gamme logicielle.
Notre objectif était de trouver un environnement de développement et de production répondant à nos besoins spécifiques :

  • minimisation du nombre de langages de développement
  • compatibilité cross-plateforme (client/serveur/mobile/web)
  • interaction avec les bases de données et les API tierces
  • développement rapide d'applications (orienté RAD) à interfaces "responsives"
  • couverture fonctionnelle standard (utilisateurs, permissions, menus...) et spécifique (gestion d'application, documents, cartographie, multi-dossiers...)
  • légèreté économique et facilité de maintenance
  • évolutif et idéalement orienté vers l'open source


Après une année de recherche approfondie et d'analyse de produits potentiels, langages, bibliothèques et environnement de développement, nous avons constaté qu'aucune solution existante ne répondrait complètement à l'ensemble de nos contraintes (tableau comparatif à venir).

Suite à ce tri, la plupart des options restantes semblaient converger vers un langage commun : le JavaScript.

Considérant l'évolution et la popularité croissante du langage, ainsi que les différentes et très prometteuses librairies identifiées lors de notre phase de recherche, nous orientons nos efforts sur une analyse de conception d'un framework JavaScript.


Tango.js : le framework JavaScript au service de la GTA

Nos analyses conceptuelles, validées par l'intégration de bibliothèques identifiées, nous ont conduit à concevoir notre futur framework. Initialement orienté vers la Gestion du Temps et des Activités (GTA), nous lui avons attribué le nom de code "Tango" (Temps-Go!).

Nos recherches et développements ont abouti à une structuration du framework qui comprend :

  • un noyau (TgxCore) permettant la construction d'instances applicatives selon un modèle MVC, déployable sur navigateurs web, Node.js, Cordova, Chromium, Docker ou Kubernetes, avec la perspective d'évolution vers des interfaces de conception RAD
  • une surcouche de communication (TgxCom) permettant l'échange entre instances via WebSocket
  • un ensemble de composants visuels et non visuels (Composants Tgx) facilitant l'intégration de comportements spécifiques ou de librairies externes à une vue ou un contrôleur
  • un composant (TgxServicesProvider) permettant l'accès aux services proposés par une instance, pour elle-même ou pour d'autres instances
  • un composant abstrait (TgxBDProvider) pour l'accès à diverses bases de données, et un service générique (service dataApi) pour la manipulation de données
  • des ensembles MVC simplifiant la relation entre modèles de données et vues/contrôleurs d'application (exp, mod, params, ref, sys)
  • une interface API Rest exploitant directement le service dataApi
  • des fonctionnalités de génération de documentation à partir d'un code source commenté.
Structuration générale du framework Tango.js



Élaboration du framework à travers le prisme d'applications métiers

Résolument pragmatiques, nous avons élaboré la première version du framework en parallèle avec le développement d'applications métiers :

  • TangoGE : un logiciel de gestion globale pour les Groupements d'Employeurs (Gestion, GTA, exports paye, facturation...)
  • Controléo : un logiciel de gestion globale pour les structures de contrôles de pulvérisateurs agricoles (Prise de rendez-vous, organisation de tournées de contrôle...)
  • ArcheTimeline : un logiciel de GTA au service de structures d'accueil à l'handicap (Planification des ressources et des accueils...)


Le développement et le déploiement de ces trois applications nous ont donné l'opportunité de confirmer et d'ajuster de manière progressive les différents concepts imaginés pour le framework. Cela nous a également permis de garantir sa capacité à répondre aux besoins fonctionnels exprimés par nos clients et utilisateurs.


Tango.js : un projet OpenSource en devenir?

Dotés d'une première version opérationnelle du framework, ainsi que de réalisations concrètes illustrant son utilisation et son déploiement, nous explorons désormais les opportunités d'ouvrir le framework en tant que projet Open Source.

Conscients d'un effort préalable requis, comprenant :

  • la segmentation et le nettoyage du code,
  • l'intégration de nouvelles fonctionnalités,
  • la ré-écriture de certaines librairies internes PHP en JavaScript
  • la révision et l'audit des couches de sécurité,
  • la vérification et l'audit des licences des bibliothèques externes,
  • la documentation,
  • les actions de communication et de divulgation,

nous sommes actuellement en quête de partenaires appropriés, qu'ils soient d'ordre technique, institutionnel, ou financier, pour mener à bien notre projet d'ouverture du framework Tango.js.

Si vous êtes intéressé.e.s par cette aventure, n'hésitez pas à nous contacter !



Vous souhaitez en savoir plus ? Parlons-en de vive voix !