Un super outil open-source que l’on peut héberger soi-même, NocoDB est une alternative à AIRTABLE
NocoDB est un outil open-source qui permet de créer des tableaux contenant différents types de champs tels que du texte, des chiffres, des images, des liens… en les partageant entre utilisateurs ou via des API.
NocoDB transforme aussi votre base de données relationnelle existante en une feuille de calcul intelligente.
A l’avenir, NocoDB permettra également d’interagir avec différents types d’apps via des canaux Slack, Discord, serveur SMTP. A l’heure actuelle, ces fonctionnalités ne sont pas totalement implémentées.
L’avantage de cet outil, c’est de partager ces données via des APIs dans le cloud. NocoDB permet donc de stocker des données de différentes natures, de les visualiser et de pouvoir interagir avec elles grâce à la connexion de services externes.
C’est un joli concurrent à Airtable. Il est certes moins évolué, mais avec le temps et la communauté active, il est possible que NocoDB devienne une référence en open-source dans cette catégorie.
Cette article sera un peu long que les précédents et, ce coup-ci, il n’y aura pas d’exemples de projets. J’ai pris le parti de vous montrer l’ensemble des menus qui peuvent vous être utiles.
Dans ce tutorial, on verra donc :
Accrochez-vous !
Comme pour le précédent article n8n ou Appsmith, je vous ai préparé une VM (Machine virtuelle) toute prête contenant NocoDB, Appsmith et n8n (on commence à créer notre stack open-source low code !).
Trois possibilités s’offrent à vous pour suivre ce tutoriel :
Pour cela, il faut récupérer l’archive via le lien suivant [A venir].
C’est une image à importer directement dans VirtualBox. Pour ceux qui ne savent pas comment faire, je vous renvoie directement au premier article de cette longue série qui explique comment configurer et importer une image VBox. Le lien est ici [A venir].
Préalablement, il faut avoir installé Docker. Un super tuto en français Comment installer et utiliser Docker sur Ubuntu 20.04 | DigitalOcean
Créer le fichier suivant dans un dossier (nocodb par exemple) :
version: '3.7'
services:
root_db:
image: postgres
restart: always
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
POSTGRES_DB: root_db
healthcheck:
test: pg_isready -U "$$POSTGRES_USER" -d "$$POSTGRES_DB"
interval: 10s
timeout: 2s
retries: 10
nocodb:
depends_on:
- root_db
image: nocodb/nocodb:latest
ports:
- "8080:8080"
restart: always
environment:
NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
volumes:
db_data: {}
Et en une simple commande docker-compose up, vous démarrez le service NocoDB.
Au premier lancement, il faudra créer le compte de l’administrateur, donc attention à choisir un password conséquent et surtout, à ne pas l’oublier!
La création de compte utilisateur se fait via des invitations, il faut donc que l’administrateur vous invite. Il n’est pas possible de créer un compte automatiquement. C’est pour moi une fonctionnalité importante ! Nous pouvons choisir qui aura accès avec les droits associés.
Allez, trève de bavardage, analysons les premiers menus de l’outils!
Rentrez vos identifiants nouvellement créés.
Voici la page contenant l’ensemble de vos projets. Un projet héberge plusieurs tables de données avec une liste d’utilisateurs associée.
En créant un nouveau projet, il y a deux choix possibles :
Dans les deux cas, on vous demandera quel type d’API sera utilisé pour que vous puissiez accéder à vos données, et éventuellement les partager avec des services externes (n8n, Appsmith) via une clef d’API.
Je choisirais REST API, pour deux raisons :
Partons d’un projet totalement vide sans lien avec une base de données existante en choisissant REST APIs comme connecteur pour les services externes.
Une fois le projet créé nous arrivons sur un affichage nous présentant les utilisateurs à lier au projet.
Cette première page nous indique:
Ce menu peut être visible via le bandeau sur la gauche identifié par “Equipe et Authentification”.
Chaque membre de l’équipe doit être invité, par exemple en transmettant le lien par mail à votre collaborateur. Il est ainsi possible de définir plusieurs rôles pour un utilisateur.
Le petit bouton “share” en haut à droite est un raccourci pour inviter et donc créer un utilisateur à utiliser NocoDB
Rentrons dans le dur du sujet, c’est à dire la création de Tables que l’on pourra partager par la suite.
Cliquer sur le petit “+” comme indiqué dans l’image :
Par défaut, une table contient les colonnes id, titre, date de création de la ligne, date de mise à jour de la ligne.
Nous obtenons l’affichage suivant :
Ajoutons deux nouveaux champs :
Lorsque j’ajoute des colonnes, elles n’apparaissent pas. Pourquoi?
Par défaut, les colonnes ne sont pas visibles. Il faut cliquer sur “Fields” et cocher la/les case(s) voulues pour les afficher.
Voici un exemple avec les 2 colonnes et une donnée.
Il existe une multitude de types de champs: des nombres, des fichiers, des liens, des relations entre les tables, des formules… Donc là, c’est à vous de jouer avec les différents possibilités.
Il est possible de créer des ‘vues’ pour nous permettre, par exemple, d’afficher uniquement la liste des photos.
En cliquant sur la/les photo(s), nous pouvons directement éditer les données de la ligne entière.
Cette affichage nous permet aussi de pouvoir commenter la ligne. En effet, il est possible d’avoir pour chaque ligne un fil de discussion dédié. Pour le partage entre utilisateurs c’est génial, chacun peut indiquer les raisons de la modification des données. Le fil de discussion contiendra donc toutes les modifications apportées à une ligne.
Il existe une multitude de fonctions comme le tri (sort) ou le filtrage des données. Je vous laisse juger de ces fonctionnalités par vous-mêmes et jouer avec, rien de bien compliqué au final !
Note : les autres “vues” ne sont pas encore disponibles à l’écriture de cet article. La vue “Grid” affiche la table sans que l’on puisse ajouter de colonne.
C’est super, on arrive à créer des tables, ajouter des colonnes, ajouter des données, etc. Mais comment les visualiser et ensuite les partager avec d’autres utilisateurs?
Sur le panneau de gauche en bas :
On peut choisir le mode d’aperçu que l’on souhaite visualiser. C’est vraiment très pratique. Là je vous laisse tester car un test vaut mieux qu’un long discours :)
Une fois que vous avez testé vos différentes vues, il vous faut les partager. Pour cela, tout se passe dans le menu situé en bas à droite (“Advanced”) :
En cliquant sur “Partager la vue”, vous aurez accès à une URL :
En choisissant ce mode, je partage ma table avec un mot de passe. Je peux donc partager ce lien par mail, twitter, …
Voilà ce que donne l’affichage (navigateur en mode privé) :
Une API REST, c’est une fonctionnalité qui vous permet d’exposer les données de vos tableaux à des services tiers.
Mais est-ce accessible à tout le monde ?
Bien sûr que non! Vous allez créer un Jeton (Token) auquel vous pourrez ensuite associer différents droits d’accès.
Pour créer un Jeton, il faut se rendre dans “Equipe et Authentification” puis dans “API Token Management”:
Il vous faudra créer un nouveau Token que vous allez garder sous le coude pour être utilisé dans nos services tiers.
Ensuite, il faut se rendre dans “Swagger APIs Doc”
La liste de toutes vos URLs à appeler par des services tiers apparait ainsi :
Par exemple, si je veux obtenir l’ensemble des données de ma table “UneTable”, je vais utiliser l’URL suivante :
http://192.168.43.30:8080/nc/tuto_LwM4/api/v1/UneTable
Il faut donc spécifier au service tiers d’utiliser cette URL avec le Token
xc-auth: XXXXXXXXXXXXXXXXXXXXX que l'on passe dans le header
Par exemple, si vous utiliser le logiciel POSTMAN(qui permet de tester vos API REST), il faut entrer les paramètres suivants :
Depuis l’API, on peut modifier les données d’une ligne, ajouter, filtrer, etc,…
Note : il est également possible de configurer les droits des différentes APIs dans le menu ACL des Webhook (il faut se rendre dans une table et aller dans le menu en bas à droite).
Ce menu permet de retracer l’ensemble des évènements d’un projet, comme :
Par exemple, l’affichage suivant retrace les quelques modifications apportées à notre table d’exemple :
Pour les plus avancés, il est possible de voir les requêtes SQL qui sont effectuées lors de la création ou modification d’une table ( Onglet SQL Migrations)
C’est grâce à ce menu que vous allez pouvoir importer, exporter vos données, synchroniser vos tables,…
Ce menu est accessible par le cheminement suivant :
Depuis ce nouveau panel, il sera notamment possible de faire :
Dans les sous menus “Root_db Db MetaDate”, nous allons retrouver l’ensemble du flux SQL utilisé pour créer, modifier, supprimer une donnée ou une table. Il peut vous être proposé de “Synchroniser” vos données, faites-le !
Dans le sous menu “Root_db UI Access Control”, nous retrouvons l’ensemble des informations de connexion des utilisateurs sur les tables du projet.
Pour la moment, cette partie n’est pas encore assez développée, je ne présenterai donc aucun outil en lien. Il faut juste que le système NocoDB permette de se connecter à un ou plusieurs services tiers pour notifier des informations lors de changements de données.
Woaw, cet article était long et nous n’avons pas eu le temps de couvrir toutes les notions; mais je pense que c’est déjà suffisant pour commencer de petits projets.
Nous n’avons pas abordé :
Allez, je vous laisse travailler et je m’en vais préparer un autre article !
Note : au moment de l’écriture de ce tutorial, une traduction en français a été proposée. Cette traduction n’est pas encore finalisée. Il se peut donc qu’il y ait des différences par rapport aux Screenshot proposés.