How to build a website using Directus CMS ?
5 minutes read
Dans cet article je vais t’exposer ma réflexion autour des choix techniques que j’ai dû faire pour construire mon blog perso.
T’as sûrement entendu parler de trucs comme Notion, Medium, Dev.to, etc. Il n’a jamais été aussi simple et rapide de créer un blog internet aujourd’hui. La multiplicité de ces outils s’en est allé de manière croissante au fil des années. La plupart du temps, tu tapes sur ton clavier et hop, tu publies !
Seulement l’utilisation de ces outils a coût ; d’abord le prix. Pour Medium il faut débourser la modique somme de $5 par mois pour avoir accès aux articles les plus réputés. Pour Notion c’est 10 € par mois qu’il faut débourser pour accéder au plein potentiel de l’outil. Pourquoi payer alors que je peux une plateforme mieux adapter à mes besoins sans débourser le moindre sous ? Aussi un autre point bloquant est la publicité et les pop-ups enhavissantes. Qui veut être emmerdé par ça ? Cela va avec le dernier point avec l’utilisation de ces outils : le manque de personnalisation du design.
C’est pour toutes ces raisons que j’ai décidé de créer mon blog avec mes propres outils et avec un design établi par moi-même. J’avoue que je ne suis pas faciliter la tâche. Tout ça pour un projet d’école ? Je t’en parle dans cet article, je te conseille grandement de le lire si tu ne l’as pas encore lu.
La stack technique
Apres être sûr que je voulais faire un blog documentant mon apprentissage du WebGL pour mon journal d’apprentissage j’ai commencé à me mettre à l’oeuvre.
Voila la stack :
- Vue / Nuxt 3
- Typescript
- Node.js
- Docker
- Vercel
- Et un serveur NAS Synology
Comme je suis super à l'aise avec Vue, c'était logique de choisir ce framework front-end. Bon, j'ai failli partir sur Angular au début, histoire d'approfondir mes connaissances, car je l'apprenais pour le taf. Mais j'en parlerai dans un prochain article.
De plus, lors de mon précédent poste dans une agence de médiation culturelle, je suis devenu expérimenté du meta-framework Nuxt 3. C'est celui avec lequel je suis le plus à l'aise et ça me permet de coder super vite.
Maintenant que t'as le topo sur la stack, laisse-moi te dire pourquoi j'ai opté pour chaque truc.
Déjà, Vue / Nuxt 3, c'était une évidence. Comme je te disais, je suis super confortable avec Vue, donc ça coulait de source. Et puis, Nuxt 3, c'est le feu pour moi. Ça me permet de coder à fond les ballons, sans me prendre la tête avec des trucs inutiles.
Pourquoi TypeScript ? Ben, c'est un must pour moi. Ça rend le code plus robuste, avec moins de bugs, et ça me force à bien structurer mes projets. Bref, du bonheur en barre.
Node.js, c'est la base. Ça me permet de faire tourner mon backend avec la même techno que mon frontend, donc c'est super fluide.
Directus CMS ? C'est le petit bijou qui me permet de gérer mon contenu super facilement. J'ai besoin de rien d'autre, franchement.
Docker, c'est top pour l'isolation des environnements. Ça me permet de développer dans un environnement propre, sans me prendre la tête avec des conflits de dépendances ou des trucs du genre.
Et Vercel, c'est génial pour le déploiement. J'ai jamais vu un truc aussi simple à utiliser. Tu push ton code et hop, c'est en ligne direct.
Voilà, maintenant tu sais tout sur les choix techniques pour mon blog. Si t'as des questions ou des remarques, lâche-toi dans les commentaires ! Je suis là pour échanger.
Zoom sur le fonctionnement de Directus
Tu es toujours là ?
Tu es deep down dans un article long comme un gratte ciel. On est vraiment entre nous maintenant les amis !
C’est maintenant qu’on va rentrer dans le vif du sujet : on va découvrir comment utiliser Directus pour gérer du contenu. Comme pour des articles de blog par exemple !
Todo:
- Installation du CMS avec SQLite comme quickstart
- Overview de l’interface
- Création d’une première collection “Articles”
- Récupération des données de la collection
Installation
Passons au concret : pour l’installation nous allons utiliser un simple CLI NPM qui permettra de rapidement lancer Directus en local. Ce n’est pas adapté pour de la production mais cela nous convient parfaitement pour tester l’outil.
Initialisation du projet
Il faut remplacer nom-project par le nom que tu veux utiliser pour ton répertoire de projet.
Fig. 1: Lancement de commande d'installation
Fig. 2: Lancement du serveur Direcuts
Tadaa ! 🎉
Dashboard overview
Nous allons maintenant faire un vite aperçu des différentes vues importantes de l’interface de Directus. Tout d’abord voici la vue du contenu :
Première collection
Étape 1 : Il faut d’abord accéder aux paramètres du modèle de données
Étape 2 : Ajouter une nouvelle collection
Étape 3 : Définir le nom de la collection Entrez un nom unique pour votre collection. Ce nom sera utilisé comme clé de table de données, clé de collection API et nom de collection par défaut. Notez que ce nom ne pourra pas être modifié ultérieurement, mais il peut être traduit.
- Ajoutez deux champs de type "string" pour le titre et le sous-titre :
- Pour le titre :
- Nom du champ : "title"
- Type : "string"
- Pour le sous-titre :
- Nom du champ : "subtitle"
- Type : "string"
- Pour le titre :
En gros, avec ce "builder", tu peux :
- Créer des nouveaux éléments directement dans la collection associée.
- Sélectionner des éléments existants depuis cette même collection.
- Définir combien d'éléments tu veux voir par page.
- Autoriser ou pas le fait d'ajouter plusieurs fois le même élément, tu vois, histoire d'éviter les doublons.
Voilà, c'est comme un outil de lien et de construction qui te donne plus de flexibilité pour organiser tes données comme tu veux.
Et voilà ! 🎉
Fetch les datas
Maintenant je vais utiliser ces données en les récupérant depuis un client. Pour ma part je vais utiliser Vue.js avec l’endpoint GraphQL, mais il y a aussi une API REST que Directus nous fournit.
Pour cela il suffit de faire une requête GraphQL sur ce url endpoint : https://<directus-domain>/graphql