Si vous avez déjà une expérience de la programmation classique ou d'une autre plateforme no-code/low-code, beaucoup de concepts vous seront familiers.

Contrairement à d'autres solutions no-code et low-code, AppMaster est construit avec une approche classique de la construction d'applications. L'élément de base dans AppMaster est un projet, pas une application comme dans d'autres plateformes. Les projets peuvent consister en de multiples applications backend, web et mobiles. L'architecture de la solution - client-serveur (pas un monolithe comme dans Bubble ou d'autres plateformes similaires).

Si vous passez d'une autre plateforme no-code à une autre, gardez à l'esprit que dans AppMaster vous créez le backend, le web et le mobile séparément avec différents outils de la plateforme. L'un des moments les plus frustrants pour ces utilisateurs est de se rappeler qu'il faut créer des applications séparées et construire la logique dans ces applications.

Comment commencer ?

Pour la plupart des projets, vous devrez créer un backend et un web, ou un backend et un mobile ou même tous les types d'applications.

IMPORTANT. Veillez à mettre en œuvre la majeure partie de votre logique dans l'application dorsale. Ne placez jamais de logique importante dans les applications web ou mobiles sur lesquelles vous n'avez aucun contrôle. L'application frontale sert uniquement à la visualisation des données et à la collecte d'informations à partir des entrées de l'utilisateur.

La méthode la plus simple consiste à commencer par créer une application dorsale.

APPLICATIONS BACKEND

Backend Étape 1. Définissez vos modèles de données dans le concepteur de modèles de données du backend. Vous pouvez considérer chaque modèle comme une table dans la base de données SQL (avec des relations). Dans AppMaster, les modèles de données ne sont pas seulement utilisés pour définir les tables primaires de la base de données, mais aussi comme une déclaration de structure à travers le projet. Par exemple, si votre logique utilise le modèle de données "Utilisateur", vous pouvez être sûr que toute structure de ce type aura le même ensemble de champs.

Cliquez avec le bouton droit de la souris sur le canevas du concepteur de modèles de données pour créer un nouveau modèle et faites-le glisser d'un bord de modèle à un autre bord de modèle pour créer une relation. Cliquez sur le champ de la relation ou du modèle pour le modifier.

Faites attention aux propriétés des champs comme Unique, Not NULL ou Index : si vous appliquez la politique NOT NULL ou Unique à la base de données existante avec des valeurs vides ou dupliquées, la migration du schéma de la base de données finira par échouer.

Backend Étape 2. Créez des processus métier pour votre application. Le processus métier (BP) en termes de Plateforme AppMaster est juste un terme unique pour une fonction dans la programmation classique.

Chaque BP de backend a 2 blocs obligatoires : Début et Fin. Si vous avez besoin de transmettre des données à votre BP, vous devez définir des variables dans le bloc Début (elles fonctionneront comme des arguments dans les fonctions de la programmation classique) et les connecter à vos blocs à l'intérieur du BP.

Pour renvoyer des données de la BP, vous pouvez ajouter des variables au bloc End (comme le return dans les fonctions de la programmation classique).

Il existe deux types de connexions entre les blocs BP :

  • une ligne bleue continue appelée connexions de flux, qui définit l'ordre d'exécution des blocs (quel bloc doit être exécuté ensuite)
  • des lignes fines de plusieurs couleurs appelées connexions variables qui définissent les liaisons de données (d'où proviennent les données - connexion de données entre les blocs BP). Chaque couleur correspond à un type de données différent

En règle générale, les emplacements dans les blocs BP pour les connexions de flux ou de variables sont appelés connecteurs. Tous les connecteurs situés à gauche du bloc sont des connecteurs d'entrée (ils reçoivent des flux ou des données) et ceux situés à droite sont des connecteurs de sortie (ils transmettent des flux ou des données).

Pour créer une connexion, vous devez glisser d'un connecteur à l'autre (glisser entre les blocs que vous devez connecter).

Quel que soit le côté à partir duquel vous commencerez à glisser, cela formera une connexion.

L'éditeur de BP vérifie automatiquement les types de données pour les connexions variables et ne vous laissera pas vous connecter si les types de données ne sont pas identiques, ce qui évitera les boucles ou les mauvaises connexions.

Vous pouvez appeler un BP à partir d'un autre - il suffit de faire glisser et de déposer le bloc approprié dans le panneau de gauche. Nous utilisons souvent cette approche pour minimiser la complexité de la logique et réutiliser la même logique plusieurs fois dans le projet.

Il existe deux types de variables dans les applications dorsales que vous pouvez placer dans la BP pour stocker temporairement des données :

  • Variables locales - pour stocker les données pendant le cycle de vie de la BP actuelle (plus efficace, uniquement en mémoire).
  • Variables globales - pour stocker vos données pendant le cycle de vie de l'application backend (également en mémoire uniquement, elles seront réinitialisées au redémarrage de l'application).

Avant de pouvoir utiliser une variable globale en la faisant glisser depuis le panneau gauche de l'éditeur de BP, vous devez en créer une en utilisant une section de la logique du backend.

Si votre BP doit être appelé depuis une source externe via une API (depuis votre web, mobile, en utilisant postman/curl, depuis un système externe), vous devez attacher BP au point de terminaison.

Backend Étape 3. Créer des points de terminaison. Dans AppMaster, nous utilisons la même approche classique de l'API REST pour les points de terminaison. Bien qu'AppMaster supporte non seulement les points de terminaison de l'API REST mais aussi les WebHooks et les points de terminaison WSS, nous nous concentrerons sur le premier type.

Lors de la création de points de terminaison, veuillez adhérer au standard de l'API REST en termes de méthodes (GET, POST, PUT, PATCH, DELETE), de charges utiles (utiliser JSON) et d'URL (pas de caractères non ASCII, pas d'espaces, commence et se termine par une barre oblique).

Le processus de création des points de terminaison est très simple et direct : sélectionnez BP, définissez l'URL et la méthode REST, et si vous avez besoin d'une autorisation sur ces points de terminaison, vérifiez les paramètres de l'intergiciel.

Une fois que les modèles de données, les processus métier et les points de terminaison sont prêts, il est temps de publier - appuyez sur le bouton "publier" ! En général, en moins de 30 secondes, AppMaster Platform va prendre tous vos blueprints (oui, en fait, tout ce que vous avez fait a créé des blueprints pour le futur logiciel), générer le code source, compiler, empaqueter dans l'image docker et déployer sur le nuage AppMaster. Lorsque le processus de publication est terminé, vous pouvez ouvrir la documentation de l'API REST (OpenAPI/Swagger) et tester vos points de terminaison avec les requêtes intégrées de Swagger ou en utilisant des outils tiers comme Postman ou Insomnia.

IMPORTANT. Si vous utilisez l'abonnement Learn & Explore, notre démon d'économie de ressources arrêtera votre conteneur d'application après 30 minutes d'inactivité dans Studio. Pour relancer l'application, cliquez sur l'option Déployer le plan ou publiez à nouveau.

APPLICATIONS WEB

Lorsque le backend est correctement planifié et créé, il est temps de passer au frontend. Nous commencerons par l'application web.

WebApp Étape 1. Créez une application web si vous n'en avez pas dans le projet. Pour l'instant, nous avons deux types de concepteurs d'applications web : les concepteurs actuels et les nouveaux (en version bêta). La principale différence réside dans le degré de personnalisation. La génération actuelle de WebApp Designer a des capacités de personnalisation de l'interface utilisateur très limitées, mais des interfaces utilisateur standard simples et faciles à construire pour les panneaux d'administration et les portails clients. Le nouveau (actuellement en version bêta) permet une personnalisation complète de l'apparence et du remplissage de l'interface utilisateur - une approche flexbox avec des mises en page de SPA (Vue, React way). Les deux concepteurs intègrent des processus métier, y compris des déclencheurs et un ensemble de blocs utiles.

WebApp Étape 2. Commencez à concevoir l'interface utilisateur de votre application web en faisant glisser et en déposant les éléments de l'interface utilisateur à partir du panneau supérieur (concepteur actuel) ou du panneau gauche (nouveau concepteur). Pour certains éléments qui contiennent une énumération (comme les tableaux et les listes), vous devrez sélectionner le modèle de données au cours de la phase initiale de dépôt afin d'ajuster automatiquement l'élément.

Il existe 2 types de processus métier dans les applications Web : Déclencheur et Standard. Les déclencheurs sont disponibles pour chaque élément de l'interface utilisateur et pour l'ensemble de l'application (déclencheurs d'application). Pour accéder au déclencheur d'un élément de l'interface utilisateur, sélectionnez l'élément et, dans l'onglet BP, créez-en un. Contrairement aux BP standard, les déclencheurs ont plusieurs blocs de départ : un bloc pour chaque événement et aucun bloc de fin. Étant donné que les déclencheurs ne renvoient jamais de valeurs, les blocs de fin ne sont pas nécessaires. Vous pouvez toujours créer des processus de gestion standard dans les applications web, mais la seule façon de les exécuter est de les appeler à partir des déclencheurs. C'est une bonne approche que de déplacer la logique fréquemment utilisée vers les BP Web standard et de l'appeler simplement à partir des déclencheurs.

IMPORTANT. N'oubliez pas que les BP backend s'exécutent dans les applications backend, tandis que les BP des applications web s'exécutent dans les navigateurs des utilisateurs, et que la minimisation de la charge de travail web est bénéfique pour l'expérience des utilisateurs.

Il existe quelques déclencheurs très importants au niveau de l'application. Par exemple, App onLaunch se déclenche lorsqu'une application vient d'être lancée dans le navigateur. C'est le meilleur endroit pour vérifier si l'utilisateur est authentifié et, si ce n'est pas le cas, pour le rediriger vers la bonne page (si vous avez besoin d'une authentification).

N'oubliez pas de sauvegarder le schéma de votre application web et de publier votre projet pour voir les changements.

APPLICATIONS MOBILES

Lorsque vous avez besoin de créer une application mobile, le processus est le même que pour une application web : créez des écrans, placez des éléments d'interface utilisateur, créez des déclencheurs d'éléments d'interface utilisateur, ajustez le déclencheur App onLaunch et vous êtes prêt à partir. Il n'y a pas de prévisualisation web pour les applications mobiles AppMaster, mais vous pouvez installer l'application mobile AppMaster Developer pour Android et IOS pour prévisualiser en direct vos applications avec toutes les fonctionnalités liées au matériel comme BLE, NFC, etc.

Lorsque vous avez terminé le développement de votre application mobile et qu'elle est prête à être publiée, AppMaster dispose d'un assistant de publication spécial disponible à partir du menu contextuel dans la liste de toutes les applications mobiles du projet. Pour Android, AppMaster génère des fichiers APK et AAB qui peuvent être publiés.

RÉSUMÉ

AppMaster est un grand IDE où vous pouvez planifier vos applications avec des plans avancés dans le concepteur de modèles de données, l'éditeur de processus d'affaires, les concepteurs Web et mobiles.

FAQ

Pourquoi avons-nous besoin de projets avec plusieurs applications par projet ?

AppMaster utilise une architecture client-serveur et non un monolithe. Il y a de nombreux cas où vous pouvez avoir besoin de plusieurs applications par projet lorsque vous avez besoin de séparer les fonctionnalités :

  • Projets complexes : comme les taxis où une application pour les passagers et une autre pour les chauffeurs travaillent avec le même backend.
  • Créer plusieurs applications backend pour équilibrer la charge de travail et rendre les changements plus faciles et moins risqués.

Bien que vous puissiez déjà créer plusieurs applications web et mobiles par projet, nous travaillons toujours à l'introduction de plusieurs applications backend par projet.

Quels sont les avantages et les inconvénients des applications générées ?

Les avantages les plus évidents et les plus perceptibles sont des performances nettement supérieures, l'évolutivité, la possibilité d'obtenir des fichiers binaires à exécuter sur site et un code source permettant de passer les certifications et les audits. Nous utilisons la dernière version du langage de programmation Go pour générer des applications dorsales. Go offre de nombreuses performances aux applications compilées, une compilation croisée pour de multiples architectures de systèmes d'exploitation et d'unités centrales, et une simplicité globale grâce à sa flexibilité.

Les inconvénients les plus courants sont la nécessité de régénérer et de construire à nouveau l'application à chaque fois que vous introduisez des changements dans vos plans, ce qui prend en moyenne 35 à 45 secondes pour les projets de taille moyenne. De plus, il y a une complexité et des coûts supplémentaires puisque nous devons exécuter les applications dans notre cloud : chaque application que nous exécutons dans le conteneur docker consomme du CPU et de la RAM (même si elle est au ralenti), et nécessite la migration du schéma de la base de données (nous le faisons automatiquement).

Mais en général, les applications générées par le code fonctionnent aussi bien que celles créées par la programmation classique.

Quelle technologie est utilisée dans les applications web ?

Nous générons des applications web en utilisant le framework Vue3 avec TypeScript (TS). Les applications web fonctionnent en combinant les modes SPA et SSG. Le rendu côté serveur (SSR) sera ajouté plus tard et uniquement pour les nouveaux concepteurs d'applications web.

Quelle technologie est utilisée dans les applications mobiles ?

Nos applications mobiles sont construites à l'aide d'une approche déclarative orientée backend : nous utilisons une base de code entièrement native (la plus native) de Swift et SwiftUI pour IOS, Kotlin, et Jetpack Compose pour Android. Techniquement, les applications mobiles chargent la configuration et les écrans via le réseau à la demande en utilisant JSON et Protobuf pour une performance maximale. Cette approche présente de nombreux avantages : vous pouvez modifier les applications en temps réel sans avoir à publier les versions mises à jour des applications sur l'AppStore ou le Play Market, vous pouvez travailler complètement hors ligne et vous avez accès à toutes les fonctionnalités du matériel. Nous n'utilisons pas la technologie HTML/JS/ReactNative ou PWA dans nos applications mobiles. Les applications mobiles créées dans AppMaster doivent être distribuées via l'AppStore, le Play Market ou toute autre plateforme de distribution (techniquement, vous pouvez partager des fichiers apk/aab pour Android, mais cela demande beaucoup d'efforts).

Où hébergez-vous les applications par défaut ?

Nous avons construit AppMaster Cloud sur l'infrastructure AWS afin d'offrir à nos clients le service le plus fiable et le plus évolutif. Par défaut, les clients avec n'importe quel abonnement peuvent utiliser l'une des 3 régions principales : Amérique du Nord (US), Europe (Allemagne), Asie. Pour les plans d'hébergement dédiés, nous disposons de la plupart des régions AWS (au-delà des régions principales). Si vous avez besoin d'un pays spécifique pour héberger votre application, faites-le nous savoir.

Comment puis-je obtenir le bundle, le binaire ou le code source de mes applications ?

Pour obtenir des fichiers binaires ou des bundles, vous devez avoir au moins un abonnement Business. Les applications backend peuvent être téléchargées depuis le magasin d'artefacts sous forme de fichiers binaires ou tirées via docker pull depuis notre registre (comme Docker Hub). Les bundles mobiles et Web peuvent également être téléchargés depuis le magasin d'artefacts. Vous pouvez télécharger les packs d'applications mobiles avec n'importe quel abonnement, à l'exception de Learn & Explore. Pour obtenir le code source de l'application, vous devez disposer d'un abonnement Entreprise. Avec un abonnement entreprise, vous obtiendrez le code source complet des applications web et backend, mais une base de code limitée pour les applications mobiles, puisque nous utilisons une approche backend.

Quelle est la différence entre un modèle et un modèle virtuel ?

Nous utilisons le terme "modèle" pour désigner la structure pour laquelle nous allons créer des tables dans une base de données et précréer automatiquement des blocs de données pour effectuer des opérations de base sur cette table de base de données, comme la recherche, la création d'enregistrements, etc. Les modèles virtuels sont identiques, sauf que nous ne créerons pas de tables et qu'il n'y aura pas de blocs de données. Les modèles virtuels étaient l'une des fonctionnalités les plus demandées par la plupart des développeurs. Le cas d'utilisation le plus fréquent pour les modèles virtuels est lorsque vous avez besoin de créer une structure (comme des objets en JS ou JSON) et de l'utiliser pour des requêtes externes, des éléments d'interface utilisateur ou des points de terminaison. Il est curieux que les modèles définis dans les applications dorsales apparaissent automatiquement dans les applications web et mobiles en tant que modèles virtuels : dans les applications web et mobiles, vous devez connaître n'importe quelle structure de données pour pouvoir travailler avec.

Comment puis-je travailler avec des modèles dans les processus d'entreprise ? Comment extraire des champs, etc.

Pour chaque modèle, nous prégénérons les blocs Make et Expand. Make rassemble les champs dans l'enregistrement du modèle, Expand extrait les champs de l'enregistrement du modèle. Veuillez noter que ces blocs ne modifient pas les données initiales qui sont transmises à l'entrée des blocs.

Comment puis-je définir la valeur des variables locales ou globales ?

Tous les blocs que vous utiliserez ne modifieront pas les données initiales lorsque vous les transmettrez à l'entrée. Le seul bloc qui modifie les données est Set Variable : connectez la variable et la valeur et après l'exécution du bloc, vous obtiendrez votre valeur à l'intérieur de la variable. Les variables globales dans les applications mobiles et web peuvent avoir une persistance et survivront au redémarrage de l'application si le drapeau approprié est activé.

Comment puis-je faire un appel API à un système externe ?

La meilleure façon d'effectuer des requêtes vers des systèmes externes est de le faire à partir de votre application dorsale. Vous aurez ainsi un meilleur contrôle sur les données et la sécurité. Il y a deux façons de procéder :

  • L'utilisation du bloc de requête HTTP est la manière la plus simple de le faire, vous pouvez l'utiliser dans n'importe quel BP backend.
  • En utilisant le concepteur d'API externe pour créer d'abord une demande, puis en utilisant des blocs élaborés dans vos interfaces de programmation.

Bien que vous puissiez utiliser le bloc HTTP Request pour appeler des systèmes externes non seulement dans les applications dorsales, mais aussi dans les applications web et mobiles, vous devez avoir une raison de le faire : lorsque votre application frontale veut faire un appel à l'appareil dans le réseau local, ou si c'est conçu pour le système tiers.

Quels types de requêtes et de protocoles sont pris en charge lors de l'appel à des systèmes externes ?

Pour l'instant, nous supportons les requêtes API REST avec des charges utiles JSON ou XML, du texte brut ou des charges utiles binaires. gRPC n'est pas encore supporté, mais nous travaillons activement à l'introduire dans les prochains mois avec notre tout nouveau Concepteur API Externe.

Les applications créées par AppMaster supportent-elles les WebSockets ?

Oui, vous pouvez créer des points d'extrémité WSS dans l'application backend et les utiliser pour communiquer avec des applications web ou mobiles. Vous pouvez également définir vos propres structures de charge utile en utilisant des modèles lors de la création du point de terminaison WSS. La communication avec des systèmes externes à l'aide de WebSockets n'est pas implémentée.

Comment puis-je appeler le point de terminaison backend à partir d'une application web ou mobile ?

Pour chaque point de terminaison que vous avez créé dans l'application backend, la plateforme crée un bloc Server Requestpour les applications web et mobiles. Il suffit de placer ce bloc dans n'importe quel déclencheur et de l'appeler. Vous pouvez surveiller l'exécution des blocs de requête de serveur dans la console de développement du navigateur, onglet requêtes de réseau. Dans les applications mobiles, vous pouvez utiliser les logs (ils doivent d'abord être activés dans les paramètres d'AppMaster Developer App).

Puis-je créer une authentification et une inscription personnalisées ?

Bien sûr, vous pouvez complètement désactiver le module d'authentification intégré et créer une solution entièrement personnalisée. Vous aurez besoin de créer un BP séparé dans l'application backend qui gérera la traction du jeton d'authentification (généralement à partir de l'en-tête de la requête) et vérifiera selon vos règles. Vous pouvez obtenir les en-têtes de requête en utilisant le bloc BP Get Request Headers. Veuillez noter que si vous désactivez l'authentification intégrée, vous ne pourrez plus utiliser le bloc Get Current User (Obtenir l'utilisateur actuel ). Vous pouvez également utiliser n'importe quel identifiant, numéro de téléphone ou autre au lieu de l'email avec le module d'authentification standard.

Existe-t-il un moyen de créer des opérations thread-safe pour des compteurs fiables et d'autres cas d'exécution ordonnée ?

AppMaster supporte un mode mono-thread pour l'exécution des processus métier lorsque tous les appels du processus métier sont exécutés dans un ordre strict, un à la fois. Ce mode peut avoir une pénalité de performance pour les situations de charge de travail élevée, mais dans la plupart des cas, il ne cause pas de dégradation significative de la performance. Veuillez noter que la pile d'appels (file d'attente) de ce mode est limitée.

2FA avec SMS, email ou OTP ?

Oui, vous pouvez adapter votre logique d'authentification pour inclure des méthodes 2FA. Pour utiliser le SMS ou l'email, vous devez connecter un fournisseur externe comme Twilio. Le moyen le plus simple est d'étendre les sessions et d'inclure des champs supplémentaires pour contrôler le 2FA dans la session. Au troisième trimestre 2023, nous introduirons un module OTP basé sur le temps qui fonctionnera avec Google et Microsoft Authenticator.

Puis-je utiliser le backend généré par AppMaster avec d'autres applications web ou mobiles ?

Oui, les applications backend générées par AppMaster ont des points d'extrémité d'API REST standard. Pour chaque application, la documentation de l'API REST (OpenAPI/Swagger) est générée automatiquement et servie sur un point de terminaison séparé.

Puis-je utiliser des modèles pour créer des projets ou des applications ?

Nous n'avons pas encore de modèles, mais c'est quelque chose que nous mettrons en place dans un futur proche. Les projets AppMaster sont plus complexes que WebFlow ou Bubble et nous avons besoin de plus de temps pour les mettre en place.

Quel type de base de données AppMaster supporte-t-il ?

Les applications backend générées par AppMaster fonctionnent avec toutes les bases de données compatibles avec PostgreSQL à partir de PG12, mais nous recommandons d'utiliser la dernière version disponible de PostgreSQL DB (15.3 au moment de la rédaction de ce document). Le support de MSSQL, MariaDB, MySQL et SQLite est prévu et sera ajouté fin 2023/début 2024.

Comment puis-je accéder directement à la base de données pour éditer des enregistrements ?

AppMaster ne supporte pas l'accès direct à la base de données pour les applications qui sont hébergées dans le Cloud AppMaster. Si vous utilisez un hébergement sur site, vous pouvez accéder à la base de données en utilisant n'importe quel outil visuel comme PGAdmin ou en utilisant l'outil de ligne de commande pgsql. Dans le futur, nous ajouterons une fonctionnalité permettant aux clients d'éditer la base de données directement.

Existe-t-il une collaboration en temps réel ? Peut-on travailler en équipe sur le même projet ?

La collaboration en temps réel n'est possible que dans le nouveau web designer. Le nouveau web designer (beta) utilise des brouillons de réseau avec un protocole de type de données répliquées sans conflit (CRDT) pour couvrir tous les cas d'utilisation et permettre la gestion des états (Ctrl+Z, opérations de retour en arrière). Nous intégrerons progressivement le CRDT dans l'éditeur BP et le concepteur de modèles de données, étape par étape. Si vous devez travailler en équipe, merci de ne pas éditer le schéma du modèle de données, le même BP, ou la même application Web/Mobile car cela peut conduire à des pertes de données.

Quelles sont les fonctionnalités importantes qui manquent à AppMaster ?

  • Visual SQL Designer. Bien que la plupart des opérations de base comme la recherche avec filtres et jointures, l'obtention d'un enregistrement par identifiant, la mise à jour, la correction, la suppression et la suppression douce soient supportées, mais pour une meilleure flexibilité et performance, nous travaillons sur Visual SQL Designer et il sera publié en octobre 2023.
  • Microservices de backend. Nous travaillons activement à la mise en œuvre de plusieurs applications backend par projet. Pour l'instant, vous ne pouvez créer qu'une seule application backend par projet.
  • Pas encore de SSR pour les applications web. Pour les applications web et les sites web les plus optimisés, la RSS apporte des avantages supplémentaires pour le référencement. ETA Nov-2023.
  • Prise en charge de gRPC pour les demandes d'API externes. Nous prévoyons d'ajouter gRPC avec une charge utile protobuf et des options de compression pour étendre les possibilités d'interconnexion entre les systèmes.
  • Modèles de projets, d'applications web et mobiles. Nous travaillons à l'introduction de modèles. Nous ajouterons des modèles d'applications web dans un premier temps en septembre 2023. Les modèles de projets n'ont pas encore d'échéance.
Was this article helpful?

AppMaster.io 101 Cours accéléré

10 Modules
2 Semaines

Vous ne savez pas par où commencer ? Lancez-vous avec notre cours accéléré pour débutants et explorez AppMaster de A à Z.

Début du cours
Development it’s so easy with AppMaster!

Besoin d'aide?

Résolvez n'importe quel problème avec l'aide de nos experts. Gagnez du temps et concentrez-vous sur la création de vos applications.

headphones

Contactez le support

Parlez-nous de votre problème et nous vous trouverons une solution.

message

Chat communautaire

Discutez de questions avec d'autres utilisateurs dans notre chat.

Rejoindre la Communauté