Transformez instantanément votre base de données SQL en backend (Directus)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00D'accord, combien de fois avez-vous reconstruit exactement le même backend ?
00:00:04CRUD, authentification, panneau d'administration, téléchargement de fichiers.
00:00:07Souvent, ce qui ressemble à de la création n'est en fait que de la reconstruction.
00:00:10Et si vous pouviez pointer un outil vers votre base SQL existante pour obtenir un backend complet ?
00:00:15C'est Directus, une API en temps réel et un tableau de bord pour gérer le contenu SQL.
00:00:21Beaucoup de développeurs réalisent qu'ils ont choisi la méthode difficile depuis le début.
00:00:25Laissez-moi vous montrer comment tout cela fonctionne en seulement quelques minutes.
00:00:30[MUSIQUE]
00:00:33Le plus gros problème de backend pour la plupart d'entre nous n'est pas la complexité, c'est la répétition.
00:00:38Nous ne résolvons pas de nouveaux problèmes, nous lions le même code encore et encore,
00:00:42et cela finit par dévorer tout notre temps.
00:00:44Directus élimine tout cela.
00:00:46Il se connecte directement à votre base de données Postgres, MySQL ou Oracle.
00:00:50Pas de migrations, pas besoin de reconstruire tout votre schéma ailleurs.
00:00:53Nous obtenons instantanément des API REST et GraphQL,
00:00:57des permissions au niveau des champs, des abonnements en temps réel,
00:01:01des flux et automatisations, la gestion de fichiers et une interface d'administration propre.
00:01:05Maintenant, ce qui est génial, c'est que votre base de données reste telle quelle.
00:01:08Ce n'est pas une couche de duplication.
00:01:10Cela compte beaucoup plus qu'il n'y paraît.
00:01:12Laissez-moi vous montrer.
00:01:13Si vous aimez les outils open-source et les astuces de code pour accélérer votre travail,
00:01:17n'oubliez pas de vous abonner.
00:01:18Nous publions des vidéos tout le temps.
00:01:20Très bien, commençons de zéro avec une installation propre de Directus,
00:01:24sans tables de base de données, rien de préchargé.
00:01:27Juste une toile complètement blanche après avoir créé mon compte ici.
00:01:32Et au lieu de me connecter à quelque chose qui existe déjà,
00:01:34je vais créer une application complète de gestion de commandes en une minute environ.
00:01:39D'abord, je crée une collection et je la nomme "Orders", juste comme ça.
00:01:45C'est tout.
00:01:45Maintenant l'application a un endroit où stocker les données, et nous pouvons y ajouter des détails.
00:01:51Je vais sélectionner et remplacer ceux dont nous avons besoin ici,
00:01:54comme le client, la date, enfin toutes ces choses amusantes.
00:01:58Ensuite, je peux ajouter manuellement n'importe quel autre champ
00:02:00dont nous pourrions avoir besoin pour ce genre de projet.
00:02:03Je pourrais donc mettre le nom du client, l'e-mail, le produit en menu déroulant,
00:02:08où je peux ajouter une clé et une valeur.
00:02:10Je peux faire de même pour le montant et le statut.
00:02:13Chaque champ ajoute plus de détails sur les données que nous allons stocker.
00:02:16Et remarquez ce qui manque ici.
00:02:18Eh bien, c'est le SQL.
00:02:19Il n'y a pas de SQL.
00:02:20Il n'y a pas de migrations.
00:02:22Pas besoin de changer d'onglet pour écrire un fichier de schéma.
00:02:25Tout est sauvegardé directement dans Directus immédiatement.
00:02:28Maintenant je peux aller dans la vue contenu et commencer à ajouter des commandes.
00:02:32Je peux ajouter la première commande ici, juste un compte fictif.
00:02:35J'en ajoute une autre.
00:02:36Et puis une troisième, n'est-ce pas ?
00:02:39Nous avons trois commandes différentes ici dans le système.
00:02:42Maintenant j'ai des données réelles avec lesquelles nous pouvons commencer à jouer.
00:02:45Mais pour l'instant c'est totalement ouvert, ce qui veut dire que n'importe qui peut tout faire.
00:02:49Alors corrigeons cela.
00:02:50Comment fait-on ?
00:02:51Eh bien, avec les permissions.
00:02:53Je vais donc dans le rôle public.
00:02:55Je vais trouver la collection "orders" que nous avons créée.
00:02:58Nous pouvons activer la lecture.
00:03:00Et je vais m'assurer que tout le reste est désactivé.
00:03:03Créer, mettre à jour, supprimer.
00:03:05Tout cela a disparu.
00:03:06C'est maintenant plus contrôlé et plus sûr pour ce que nous voulons.
00:03:10D'accord, c'est là que ça commence à devenir vraiment cool
00:03:12car nous pouvons faire de l'automatisation et créer des flux autour de ça.
00:03:16Je vais aller ici et créer un nouveau flux.
00:03:19Je vais lui donner un nom très simple, qu'est-ce que c'est ?
00:03:22Je vais mettre : notifier lors d'une nouvelle commande.
00:03:24Nom simple, conforme à mon objectif.
00:03:26Et je vais tout sélectionner depuis les items de la collection nommée "orders".
00:03:31Maintenant je peux créer un déclencheur.
00:03:33Et pour le déclencheur, je me branche sur la création d'un nouvel élément,
00:03:37spécifiquement dans cette collection "orders".
00:03:39Désormais, chaque fois qu'une commande arrive, quelque chose va se passer.
00:03:43Je vais ajouter une opération.
00:03:44Nous allons envoyer un e-mail.
00:03:46Il va écrire un objet.
00:03:47Je vais ajouter mon e-mail à cela.
00:03:49Et dans le corps, je vais extraire les données de la commande.
00:03:52Ainsi, dès qu'une commande entre, les données seront envoyées par e-mail.
00:03:56Je peux sauvegarder cette opération, puis le flux, et c'est terminé.
00:04:00Maintenant, regardez bien.
00:04:02Je vais revenir en arrière.
00:04:03Et dans mon fichier Docker Compose de départ, j'ai ajouté Mailpit pour tester.
00:04:07C'est un moyen super simple de tester la fonction d'envoi d'e-mail.
00:04:11Quand je passe une commande de plus, rien d'extraordinaire,
00:04:14mais cette fois, quelque chose est différent.
00:04:16Cela déclenche maintenant le flux automatiquement et un e-mail part avec les détails.
00:04:20Il n'y a pas de logique backend ici.
00:04:22Pas besoin de tout câbler ensemble.
00:04:25On est partis de rien : pas de tables, pas de backend, pas de structure réelle.
00:04:30Et en quelques minutes, c'est une application fonctionnelle avec permissions et,
00:04:33oui, l'automatisation, ce qui était la partie la plus cool.
00:04:35Et c'est ce qui rend Directus vraiment génial.
00:04:38C'est comme une combinaison de logique visuelle de base de données avec un n8n ou Zapier intégré,
00:04:43mais ce ne sont pas vraiment ses concurrents directs.
00:04:45Alors, qu'est-ce que Directus exactement ?
00:04:47C'est une plateforme de données open source qui se place au-dessus de votre base SQL.
00:04:52Elle ne se met pas à côté.
00:04:53Elle se place par-dessus.
00:04:55Ce modèle "database-first" est tout l'intérêt du projet.
00:04:58Qu'est-ce que cela signifie concrètement ?
00:04:59Eh bien, cela implique plusieurs choses pour nous.
00:05:01Cela signifie qu'il n'y a pas de verrouillage propriétaire.
00:05:03Le SQL complet est toujours là et fonctionne avec les systèmes hérités.
00:05:07C'est pourquoi on l'utilise pour des backends SaaS, des outils internes, des CMS headless,
00:05:13ou des agents IA avec des données contrôlées.
00:05:15Vous essayez de moderniser un vieux système sans tout réécrire.
00:05:19Votre base de données est le moteur réel ici.
00:05:21Directus lui donne simplement un tableau de bord et des contrôles.
00:05:24À première vue, si vous avez utilisé Strapi, Payload ou Hasura,
00:05:28Directus va sembler similaire, mais ils résolvent des problèmes différents.
00:05:33Strapi et Payload sont orientés "code-first".
00:05:36Vous définissez les schémas dans le code, puis reconstruisez votre structure là-bas.
00:05:40Ça fonctionne, mais c'est du travail supplémentaire.
00:05:42Directus change la donne avec quelques ajustements.
00:05:45Votre schéma existe déjà, donc au lieu de le recréer, vous le connectez simplement.
00:05:50C'est un flux de travail entièrement différent.
00:05:52Hasura est excellent pour du GraphQL rapide, mais Directus va beaucoup plus loin.
00:05:58Vous obtenez des API.
00:05:59Oui, nous les avons, mais nous avons aussi l'espace admin, les permissions, les fichiers et l'automatisation.
00:06:05Et voici ce qui intéresse le plus les développeurs après l'avoir testé : les permissions.
00:06:10Je ne parle pas de simples règles ici.
00:06:12On parle d'un contrôle réel sans aucun plugin.
00:06:15Si votre problème est "j'ai besoin d'un backend", vous avez des options.
00:06:18Si votre problème est "je ne veux pas reconstruire mon backend une fois de plus", c'est différent.
00:06:23Bien sûr, aucun outil n'est parfait, mais celui-ci est vraiment pas mal.
00:06:26Qu'est-ce que j'ai trouvé de super cool ?
00:06:28Eh bien, les permissions fonctionnent tout simplement.
00:06:29C'est génial.
00:06:30Les flux éliminent beaucoup de tâches répétitives.
00:06:32L'interface était très propre et rapide, et c'est facile à déployer avec Docker.
00:06:37En plus de tout ça, il passe très bien à l'échelle.
00:06:39Mais avec tous ces points positifs, il y a forcément des inconvénients.
00:06:43Les compromis sont que les flux avancés peuvent prendre du temps, d'accord ?
00:06:46Si vous avez déjà utilisé n8n ou autre, vous comprenez.
00:06:49La documentation n'est pas toujours complète.
00:06:51Et si vous auto-hébergez, vous devez gérer l'infrastructure vous-même.
00:06:54De plus, les configurations complexes peuvent devenir désordonnées localement.
00:06:57Directus supprime simplement un type très spécifique de travail backend répétitif.
00:07:00Alors, est-ce que Directus en vaut la peine ?
00:07:02Pour beaucoup d'entre nous, probablement que oui.
00:07:03Cela dépend de ce que vous faites, surtout si vous avez déjà des données SQL, ou si vous
00:07:07êtes fatigué de reconstruire ces backends basiques sans arrêt, alors oui,
00:07:11cela apporte une réelle valeur.
00:07:13Ça gagne du temps, réduit la maintenance, et vous gardez le contrôle des données.
00:07:17Encore une fois, c'est de l'open source.
00:07:19C'est nous qui contrôlons.
00:07:20Quand ne faudrait-il pas l'utiliser ?
00:07:22Si vous êtes dans un environnement TypeScript strict, comme un énorme monorepo, sans doute pas.
00:07:26Si vous n'avez pas de base de données existante, probablement pas non plus.
00:07:29Et si vous voulez que tout soit défini en code dès le départ, alors quelque chose comme Payload
00:07:33a beaucoup plus de sens ici.
00:07:34Mais si vous vous dites : "Attends, ça peut juste se poser sur ma base de données ?"
00:07:38Oui, tout à fait.
00:07:39Alors ça vaut peut-être le coup d'essayer.
00:07:41Si vous aimez les outils open source et les astuces de code comme celle-ci, abonnez-vous à la
00:07:45chaîne Better Stack.
00:07:46On se retrouve dans une prochaine vidéo.

Key Takeaway

Directus transforme toute base de données SQL existante en un backend complet avec API et interface d'administration en quelques minutes, éliminant ainsi la reconstruction répétitive du code CRUD.

Highlights

Directus se connecte directement aux bases de données Postgres, MySQL ou Oracle sans nécessiter de migrations de schémas.

La plateforme génère instantanément des API REST et GraphQL ainsi qu'un panneau d'administration complet.

Le modèle database-first permet de conserver le SQL d'origine tout en évitant le verrouillage propriétaire.

Les automatisations intégrées permettent de créer des flux de travail comme l'envoi d'e-mails automatique lors de la création d'une commande.

Le contrôle d'accès s'effectue au niveau des champs et des rôles sans installation de plugins supplémentaires.

L'outil est déployable rapidement via Docker pour une gestion simplifiée de l'infrastructure.

Timeline

Problématique du développement backend répétitif

  • La majeure partie du travail de développement backend consiste à reconstruire les fonctions CRUD et l'authentification.
  • La répétition de tâches identiques dévore le temps nécessaire à la résolution de nouveaux problèmes.

Le cycle habituel de création d'applications force les développeurs à coder manuellement les mêmes structures de base pour chaque projet. Cette approche inefficace retarde le déploiement de fonctionnalités réellement innovantes.

Architecture et capacités de Directus

  • Directus agit comme une couche installée par-dessus la base de données sans duplication des données.
  • Le système fournit des API en temps réel et des permissions granulaires dès la connexion à la source SQL.
  • L'interface d'administration reste propre et indépendante de la complexité du schéma sous-jacent.

Contrairement aux outils qui imposent leur propre structure, cette solution respecte le schéma SQL existant. Elle offre des abonnements en temps réel et une gestion de fichiers intégrée pour moderniser les systèmes hérités sans réécriture complète.

Création d'une application de gestion de commandes

  • La création d'une collection 'Orders' définit immédiatement un nouvel espace de stockage dans la base de données.
  • L'ajout de champs comme le nom du client ou le montant se fait via une interface visuelle sans écrire de SQL.
  • Le système enregistre les modifications de schéma instantanément sans nécessiter de fichiers de migration manuels.

Une application fonctionnelle peut être assemblée en une minute environ à partir d'une interface blanche. L'utilisateur définit les types de données, comme des menus déroulants pour le statut des produits, et peut immédiatement insérer des données fictives pour tester le système.

Sécurisation et automatisation des flux de données

  • Les permissions de lecture et d'écriture se configurent individuellement pour chaque rôle et collection.
  • L'outil de flux crée des déclencheurs automatiques basés sur des événements comme la création d'un élément.
  • L'intégration avec Mailpit permet de vérifier l'envoi d'e-mails déclenché par de nouvelles commandes en temps réel.

La sécurité est renforcée en désactivant les droits publics de modification sur les collections sensibles. En configurant un flux nommé 'notifier lors d'une nouvelle commande', les données sont extraites et envoyées par e-mail automatiquement sans aucune logique backend supplémentaire.

Comparaison avec Strapi, Payload et Hasura

  • Strapi et Payload utilisent une approche code-first nécessitant de redéfinir les schémas dans le code.
  • Hasura se concentre principalement sur GraphQL alors que Directus inclut la gestion de fichiers et un espace admin complet.
  • L'absence de verrouillage propriétaire assure que le moteur réel reste la base de données SQL.

Le choix entre ces outils dépend de la priorité donnée au code ou à la donnée. Directus se distingue par sa capacité à se poser directement sur des données existantes, ce qui est idéal pour les outils internes, les CMS headless et les agents IA nécessitant des données contrôlées.

Avantages, limites et cas d'usage

  • Les permissions natives et la rapidité de déploiement avec Docker constituent les points forts majeurs.
  • L'auto-hébergement impose de gérer soi-même l'infrastructure et la documentation peut parfois être incomplète.
  • L'outil est déconseillé pour les environnements TypeScript très stricts ou les projets sans base de données SQL préalable.

Pour les développeurs lassés de maintenir des backends basiques, la valeur ajoutée réside dans le gain de temps et le contrôle total des données. Si le projet nécessite une définition intégrale par le code dès le départ, des alternatives comme Payload restent plus pertinentes.

Community Posts

View all posts