Développement
6 sept. 2024
Lorsque nous avons lancé Documenso pour la première fois, l'une des fonctionnalités les plus demandées était l'intégration. Nous savions que c'était important et que cela correspondait à notre désir de ne pas être simplement une application de signature électronique, mais plutôt de fournir l'infrastructure de signature électronique pour le web et au-delà.
Cela étant dit, nous avons décidé de ne pas nous précipiter au départ afin de pouvoir nous concentrer sur la construction d'une application centrale solide et bien équipée. Avec le recul, c'était définitivement le bon choix. L'intégration n'est aussi bonne que les fonctionnalités qui la sous-tendent, et nous ne voulions pas publier quelque chose qui n'était pas prêt à répondre aux attentes des utilisateurs et des développeurs.
Au cours de l'année écoulée, nous avons été occupés à ajouter des tonnes de nouvelles fonctionnalités et à atteindre de nouveaux niveaux de conformité, comme la Partie 11 du CFR 21. Nous avons également introduit de nouveaux champs, développé une API, ajouté des webhooks, des intégrations avec Zapier, et bien plus encore.
Maintenant que nous avons établi une base solide, il est enfin temps de nous concentrer sur l'intégration, la fonctionnalité la plus demandée tant par nos utilisateurs que par ceux qui auto-hébergent notre plateforme.
Pourquoi l'intégration a pris du temps
Dans des projets précédents, j'ai souvent vu l'intégration construite en regroupant des composants à utiliser sur le site web ou l'application d'un client. Cette méthode offre aux utilisateurs une flexibilité maximale en matière de style et de comportement, tout en évitant certains problèmes de cross-origin. Cependant, elle peut également introduire des problèmes comme des conflits de code ou des goulets d'étranglement en matière de performance. Par exemple, des outils tiers tels que Google Tag Manager (GTM) ou d'autres scripts marketing peuvent interférer avec votre SDK. De plus, le SDK doit rester léger pour éviter de ralentir la page du client.
Pour Documenso, nous avons décidé d'explorer une approche différente. Après avoir soigneusement examiné nos options, nous avons opté pour une solution basée sur iframe. Bien que les iframes soient généralement moins flexibles—surtout en ce qui concerne le thème ou le passage de données pré-remplies contenant des informations personnellement identifiables (PII)—nous avons identifié des moyens d'atténuer ces préoccupations.
Un des plus grands défis était de garantir que nous puissions transmettre des données sensibles, telles que des e-mails pour pré-remplir des formulaires, sans exposer de PII à notre serveur. Pour résoudre ce problème, nous avons utilisé des identifiants de fragment dans l'URL, qui sont traités côté client et jamais envoyés dans des requêtes réseau. Cette méthode garantit que les PII sont protégées et ne sont pas loguées par notre serveur ou par des services web intermédiaires.
Utilisation de l'API PostMessage pour la communication
Pour maintenir un niveau élevé d'interactivité, nos iframes communiquent avec la fenêtre parentale en utilisant l'API postMessage. Cela nous permet de notifier l'application parentale lorsque des événements spécifiques se produisent à l'intérieur de l'iframe, créant ainsi une expérience utilisateur plus dynamique et établissant un pont entre notre solution basée sur iframe et les SDK lourds typiques.
De plus, des propriétés sont transmises à l'iframe via l'identifiant de fragment de l'URL. Cela évite la nécessité d'une synchronisation complexe des données bidirectionnelle entre les cadres parent et enfant, rendant le système stable et plus fiable.
Construction des intégrations avec Mitosis
Étant donné que notre solution iframe est assez légère, nous l'avons vue comme une excellente opportunité d'expérimenter avec Mitosis, ce qui nous permettrait de faire quelque chose de vraiment spécial. Pour ceux qui ne connaissent pas, Mitosis est un projet de Builder.io qui vous permet d'écrire des composants une fois, puis de les transcompiler dans une variété de frameworks comme React, Vue et Svelte.
Nous avons utilisé Mitosis pour construire deux composants clés : une intégration de modèle direct et une intégration de signature de document. Le modèle direct permet aux utilisateurs d'utiliser un modèle comme s'il s'agissait d'un document permanent—ce qui signifie que, lorsque quelqu'un complète le modèle, un nouveau document est automatiquement généré. C'est le cas d'utilisation que nous nous attendons à ce que la plupart des utilisateurs adoptent pour l'intégration. Pour des flux de travail plus avancés, nous proposons également une intégration de signature de document, capable de gérer des flux de travail multi-destinataires et d'autres scénarios complexes destinés à une utilisation dans des intégrations riches et plus profondes.
Mitosis nous a permis de cibler rapidement plusieurs frameworks populaires, y compris React, Preact, Vue, Svelte, et SolidJS.
J'avais également espéré inclure Angular, mais bien que Mitosis facilite vraiment la transposition des composants, nous devons encore nous occuper du regroupement et de l'emballage du composant résultant nous-mêmes. Bien que les frameworks ci-dessus puissent tous être regroupés en utilisant Vite.js, Angular a encore son propre ensemble d'outils que nous devrions apprendre et utiliser. Étant donné cette contrainte, nous avons décidé de mettre Angular en attente pour l'instant en attendant que le support plus récent de Vite.js mûrisse.
Défis et leçons avec Mitosis et plus encore
Bien que notre expérience avec Mitosis ait été largement positive, il y a eu quelques défis en cours de route. Par exemple, certaines propriétés d'état ayant les mêmes noms que les propriétés ont causé des problèmes lors du processus de transposition, entraînant des erreurs de type et des résultats de transposition inattendus avec certaines cibles.
Ce fut également un défi puisque notre mise en œuvre initiale des deux composants avait une séparation mineure des préoccupations, ce qui a également entraîné des problèmes de transposition avec certaines cibles. Nous avons résolu cela en supprimant la séparation des préoccupations pour le moment, car elle était principalement pour l'apparence plutôt que par nécessité.
En plus de cela, l'emballage et la publication des intégrations posaient leurs propres défis, notamment compte tenu de la complexité croissante de la gestion des packages JavaScript. Des outils comme Publint ont aidé à rationaliser le processus en veillant à ce que nous respections les meilleures pratiques pour les formats CommonJS et ESM.
Vers l'avenir, la plateforme Documenso
Avec la fonctionnalité d'intégration désormais en place, nous sommes ravis de continuer à étendre les capacités de Documenso. Les intégrations ne sont que le début de ce que nous appelons la plateforme Documenso. Grâce à notre recherche utilisateur, nous avons appris que bien que de nombreuses entreprises apprécient d'avoir une solution de signature électronique flexible, elles sont encore plus intéressées par l'utilisation de nos outils pour intégrer la fonctionnalité de signature directement dans leurs propres applications—sans se soucier des complexités techniques de conformité et de sécurité qui accompagnent la signature électronique.
Au cours des prochains mois, nous travaillerons à l'amélioration de notre API, au renforcement des intégrations avec des outils comme Zapier, et à l'amélioration de notre système de webhook. Notre objectif est de donner aux utilisateurs la possibilité d'intégrer des signatures électroniques et la gestion de documents où qu'ils en aient besoin, que ce soit par l'auto-hébergement ou en utilisant Documenso comme plateforme. Nous avons hâte de voir comment nos utilisateurs et auto-hébergeurs tireront parti de ces nouvelles capacités !
Prêt à commencer ?
Si vous êtes prêt à intégrer la signature de document dans votre propre application ou site web, consultez notre documentation sur l'intégration pour voir à quel point il est facile de commencer. Vous trouverez tout ce dont vous avez besoin pour commencer dès aujourd'hui !
Nous sommes toujours là pour vous aider ! Si vous avez des questions ou avez besoin de soutien, rejoignez notre Discord ou réservez une démo. Nous serions ravis d'entendre comment vous utilisez Documenso ou souhaitez utiliser Documenso pour améliorer votre flux de travail.
Restez à l'écoute pour plus d'actualités alors que nous continuons à faire évoluer la plateforme Documenso et à rendre encore plus facile l'intégration de la signature de document dans vos flux de travail.