Cela fait maintenant 3 ans que j'ai découvert et que j'utilise la TALL stack au quotidien dans mon métier, et je dois dire que j'affectionne particulièrement cette stack flexible et agréable à employer.
C'est une stack technique qui permet de construire des applications web flexibles et réactives avec des langages simples et courants du web (PHP, JS).
Déjà TALL est l'acronyme de Tailwind CSS, Alpine.js, Laravel et Livewire, 4 outils qui fonctionnent super bien entre eux.
Alors ce n'est pas non plus une panacée, ce n'est pas une solution qui fait tout, mais elle en fait beaucoup, et avec une expérience de développement appréciable.
Les champs d'application sont vastes, mais je dirais que c'est extrêmement pertinent pour les applications avec un front-end réactif et un back-end avec un métier particulier et évolué dès lors qu'il sort du carcan standard (genre dès qu'on est plus complexe qu'un blog).
Pour vous donner des exemples, j'aime bien m'en servir pour des services de gestion de contenus, des outils de réservation ou encore de gestion de stock, etc, bref, ce genre-là et ce qui est également plus complexe.
C'est également une bonne stack pour les équipes réduites sur un projet, et c'est royal si vous êtes une petite agence web qui aime faire du sur-mesure codé et métier (plutôt que d'installer des plugins, ce qui est une préférence, pas un jugement de valeur, les deux sont et font de superbes projets).
On l'a dit, on part sur 4 frameworks :
Tailwind CSS, qui, comme son nom le laisse supposer
est un framework css
. Son atout est qu'il est orienté utility-first c'est-à-dire
qu'il ne vient pas avec des composants directs et des noms de classe précis (ni même
une opinion sur le nommage) mais plutôt avec des noms de classes qui sont basées sur
des règles css
applicables directement. Le point positif, c'est que l'intégration est
simple et rapide, le point légèrement négatif, c'est que du coup, cela n'est pas orienté
composants (mais il le permet).
Alpine.js est un framework js
light, un peu dans la veine de
Svelte combiné avec des notions qui ressemblent furieusement à
Vue.js. C'est un framework pour faire du front quand ce dernier est le
plus souvent déjà généré par le back-end (comme Svelte).
Laravel, le framework back-end construit en php
et complètement
orienté expérience-développeur. C'est toujours un plaisir de développer des outils avec
Laravel, d'autant plus que c'est un framework qui embarque pas mal de notions assez
poussées et complètes, permettant de construire des back-end avec de la logique assez
précise (même si en substance, nous restons sur du MVC, il peut être utilisé pour du DDD,
oui, oui, même si là, on parle de TALL stack, donc pas vraiment de DDD dans notre cas).
Livewire est un framework qui permet de faire le liant
entre le back-end et le front-end (il est d'ailleurs nommé "framework full-stack" par ses
créateurs). Au lieu de faire du Vue ou du React, qui sont quand même d'excellents
frameworks, Livewire, lui, propose de simplifier toutes les requêtes AJAX et toute la
complexité de rendre un front réactif... Sans jamais coder en js
.
Oui. Sans. Jamais. Coder. En. JavaScript.
Pour faire simple, c'est du Vue/React... en php
. Et c'est facile. Genre vraiment.
Vous décrire comment cela fonctionne exactement ou comment on code avec, c'est prévu, mais pas forcément dans cet article (car cela me demanderait pas mal de temps) mais je vous invite à découvrir la stack par vous mêmes, surtout si vous êtes déjà amateur•ices et utilisateur•ices d'un des 4 frameworks sus-mentionnés.
D'un. Non. Selon ma très humble opinion de jeune développeuse profane, il ne faut jamais se cantonner à une et une seule solution / organisation. C'est ainsi, mais des projets, on en fait tous les jours, et ils ont un énorme point en commun, c'est qu'ils sont tous différents. Donc vouloir utiliser une seule stack pour les gouverner tous, je ne conseillerais pas sans y réfléchir un minimum en amont.
Concernant la stack elle-même, une fois qu'on l'a lancée et qu'on a démarré un projet dessus, eh bien je dirais... Non plus ! En effet, rien ne nous oblige à utiliser Tailwind CSS en front, pas plus qu'Alpine.js. Après en back, je vous dirais que si vous partez sur Laravel, c'est que vous connaissez son fonctionnement, ses forces et ses faiblesses, car au final, ce sont les mêmes, que ce soit dans une stack comme la TALL stack ou une autre. Après, je cherche encore des cas où par exemple une autre solution comme Symfony est meilleure, mais cela n'a pas vraiment de sens, tant qu'on n'a pas de projet défini, on n'a pas vraiment de choix "par défaut".
Comme nous l'avons dit plus haut, cela dépend du projet, mais en gros, ce qu'apporte la TALL stack, ce sont des outils qui facilitent grandement l'expérience en développement en se concentrant sur l'apport de valeur ajoutée plutôt que sur la configuration. Elle sied bien à la fois dans des équipes de 5-6 personnes, tout comme dans des plus petites équipes, ou sur un petit produit dans une grosse structure, ou même pour des développeur•euses seul•es. La légèreté apportée par Livewire permet d'avoir une bonne fluidité sur la construction de front réactif tout en restant sur un langage unique.
Côté performances, on n'a pas à rougir d'une solution avec front séparé (Genre une API REST ou GraphQL en back-end et un front avec un framework JS) bien au contraire.
Selon moi, c'est assez viable pour des projets fluides, du simple au plus conséquent, après il est certain que si votre équipe est essentiellement basée sur du Symfony / React, leur proposer la TALL stack ne sera pas chose aisée (ni même souhaitable, je pense) mais mon conseil serait, pour la culture perso ou en guise de Kata, de reprendre un projet existant dans une autre stack à finalité similaire (c'est important) et de voir ce qu'il peut donner une fois passé dans la TALL stack, je pense qu'il y a moyen de s'amuser ;)
Idéalement c'est cool quand on se trouve dans la situation du CMS avec 20 - 30 plugins et qui commence à montrer des signes d'essoufflement, et des demandes clients de plus en plus en dehors de ce que le CMS et ses plugins proposent, le reprendre avec la TALL stack, ça peut être interessant tant sur le plan technique que commercial ;)
Pour en apprendre plus sur la TALL stack, le site de laravel-sillo approfondi bien plus le sujet et se plonge dans le code avec quelques exemples :
Sinon, vous avez le site de Matt Stauffer qui présente la TALL stack, avec des démos et autres ressources utiles :
Pour ma part, je vous laisse, je retourne sur ma stack préférée, bye 👋