Écosystème Laravel : nos 10 paquets préférés !

Laravel est l’un des frameworks PHP les plus populaires au monde, reconnu pour sa simplicité, son élégance et sa richesse fonctionnelle. Depuis ses débuts, Laravel a construit un écosystème complet de bibliothèques et d’outils qui facilitent le développement web. Cet article explore quelques-unes des bibliothèques que l’on préfère : 

Laravel Breeze – Un starter-kit clé en main

Laravel Breeze est un starter-kit qui permet de mettre en place rapidement une application Laravel, contenant notamment une brique d’authentification complète. Il inclut des fonctionnalités comme la connexion, l’inscription, la réinitialisation de mot de passe, la vérification par email, la confirmation de mot de passe et la page d’édition de profil. Breeze offre plusieurs options pour le front-end, y compris les templates Blade avec Tailwind CSS, Livewire et Inertia (avec Vue ou React). Ce starter-kit est gratuit et constitue une excellente base pour démarrer un projet Laravel.

Laravel Echo – Gestion  du temps réel

Laravel Echo est une bibliothèque JavaScript qui facilite l’écoute des événements diffusés depuis votre application. Echo est nativement compatible avec Reverb, Pusher et Ably. Il permet aux développeurs de créer des applications temps réel avec des efforts limités, en utilisant une API simple et intuitive pour écouter et diffuser des événements WebSocket.

Herd – Environnement de développement

Herd est un environnement de développement complet pour MacOS et Windows, incluant tout le nécessaire pour développer des applications Laravel. La version Basic est gratuite, tandis que les éditions Pro et Teams offrent des fonctionnalités avancées comme la gestion des logs, l’intégration de Xdebug et un mail catcher pour un prix respectif de 99€/an et 299€/an pour 10 licences Pro.

Horizon – Gestion des queues

Horizon est un outil puissant pour gérer et surveiller les queues dans une application Laravel. Il propose un tableau de bord qui affiche des métriques telles que le rendement des jobs, le nombre de jobs échoués et le temps d’exécution. La configuration des workers est centralisée dans un fichier de configuration unique, ce qui simplifie la gestion des différents environnements.

Livewire – Intégration Front-End

Livewire permet de construire des interfaces réactives et dynamiques en restant dans le confort de Laravel, sans avoir besoin d’un framework JavaScript tiers comme Vue.js..  Livewire retourne le contenu HTML au chargement de la page, ce qui le rend compatible SEO. Les composants sont mis à jour via des requêtes AJAX qui retournent du nouveau contenu HTML.
Ce framework open-source est pertinent pour simplifier l’écosystème de développement sur des projets de petite taille.

Octane – Optimisation des performances

Laravel Octane est conçu pour améliorer les performances des applications Laravel en utilisant des serveurs haute performance comme Open Swoole, Swoole, RoadRunner ou FrankenPHP. Octane permet de charger l’application une seule fois et de la garder en mémoire pour les appels suivants, ce qui peut augmenter considérablement le nombre de requêtes par seconde que l’application peut gérer.
Cet outil requiert des compétences techniques significatives, afin de s’assurer de sa bonne mise en place.

Pennant – Dire oui à l’A/B testing

Laravel Pennant est une bibliothèque qui facilite la gestion des fonctionnalités au sein d’une application, permettant des déploiements progressifs et des tests A/B. L’objectif premier est de mettre à disposition des développeurs un ensemble d’outils permettant de simplement activer ou désactiver des fonctionnalités d’une application, et possiblement pour certains utilisateurs uniquement. 

Prompts – Amélioration de l’interface de commande

Prompts améliore les interactions des commandes artisan en offrant des composants interactifs comme la saisie  de texte, la sélection dans des listes et la validation des données. Il est également possible d’afficher des tableaux de données ou des barres de progression pour les traitements longs. Prompts est installé par défaut depuis Laravel 10.x, rendant les scripts artisan plus conviviaux et puissants.

Reverb – WebSocket et broadcasting

Récent dans l’univers Laravel, Reverb permet d’implémenter un serveur WebSocket directement dans une application Laravel. Bien qu’il soit encore en version bêta, il est d’ores-et-déjà compatible avec tous les clients de broadcasting proposés par Laravel. Laravel Reverb permet de profiter du temps réel sans efforts dans un contexte PHP, mais attention aux limitations de volumétries qui peuvent demander des configurations sur-mesure avancées . Et cerise sur le gâteau, il est compatible avec Laravel Pulse ! [lien vers la section Pulse ?]

Socialite – Authentification OAuth (via les réseaux sociaux)

Socialite simplifie l’authentification oAuth en permettant aux utilisateurs de se connecter avec leurs comptes de réseaux sociaux comme Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, Bitbucket et Slack. L’intégration des connexions depuis de systèmes tiers est grandement facilité grâce à Socialite, qui  est facile à configurer, et prend en charge d’autres types de connexions (Apple, Microsoft, Instagram, Snapchat, etc.)  via des paquets supplémentaires.

Spark – Solutions de paiement

Spark facilite l’intégration de solutions de paiement dans les applications Laravel. Il permet de mettre en place des abonnements mensuels ou annuels, de générer des factures.Il supporte les plateformes de paiement Paddle et Stripe. Spark offre une interface front personnalisable et est disponible pour 99$/an pour un projet unique ou 199$/an pour un nombre illimité de projets.

Telescope –  Surveillance et débogage 

Telescope est un outil de surveillance et de débogage qui enregistre et visualise les requêtes, les exceptions, les logs, les requêtes à la base de données, les queues et jobs, les notifications, et plus encore. Principalement utilisé en environnement local, Telescope peut également être déployé en production pour une surveillance approfondie des applications Laravel.

Vapor – Déploiement serverless AWS.

Vapor est une plateforme de déploiement serverless pour Laravel basée sur AWS. Elle offre une option sandbox gratuite pour un projet unique avec 10 déploiements et un nom de domaine fourni par Amazon. Les plans payants commencent à 39$/mois ou 399$/an pour un nombre illimité de projets et de déploiements, facilitant le déploiement et la gestion des applications Laravel à grande échelle.

Pulse – Monitoring en temps réel

Un des derniers nés de l’éco-système Laravel, le tant attendu Pulse permet de monitorer les performances d’une application Laravel. Il met à disposition un dashboard permettant de consulter les données importantes de son application, comme les requêtes lentes, les erreurs remontées, ou encore l’utilisation du CPU ou de la RAM. L’outil parfait pour s’assurer de la bonne conduite de ses développements en production ! 

En conclusion, Laravel offre un ecosystème extrêmement riche et permet de répondre à beaucoup de besoins. Que ce soit pour la gestion des fonctionnalités, l’authentification, le déploiement ou la surveillance, Laravel et son écosystème fournissent des solutions puissantes et intégrées, rendant le développement web redoutablement efficace !

On utilise Laravel Nova et on trouve ça cool ! 

Découvrez pourquoi Laravel Nova simplifie la création de back-offices

Vous cherchez à développer un back-office robuste ? Laravel Nova est certainement une très bonne solution… Il permet de développer une application très rapidement tout en reposant sur des technologies fiables. Et, c’est un peu notre crédo chez TheCodingMachine. Alors lorsqu’on a découvert Laravel Nova, on s’est dit qu’il fallait que l’on vous en parle. 

#1. Bon d’abord, qu’est-ce que Laravel Nova ? 

C’est un outil de conception de back-office, s’appuyant sur le très solide framework PHP Laravel

Laravel Nova permet de réduire à néant toutes les complexités inhérentes à la création d’un back-office d’administration (formulaire de création d’éléments complexes, affichage de listes triées, filtrées et paginées, déclenchement d’actions de masses, etc.), grâce à des outils clés en mains, robustes, et éprouvés.

Conçu pour drastiquement simplifier la mise en place de back-offices sur mesure, voici pourquoi vous devriez envisager d’utiliser Laravel Nova : 

  • Laravel Nova offre une interface utilisateur prête à l’emploi élégante. Vous n’avez pas besoin de créer une interface d’administration complexe depuis zéro. La gestion du menu, des listes, des formulaires, des erreurs, ou encore des dashboards est facilitée à travers des composants déjà pré-établis qualitatifs.
  • Rapidité de développement : en fournissant l’intégralité des vues et des composants du back-office, Laravel Nova permet de gagner du temps et de réduire la charge de travail de développement. Il permet notamment de générer des CRUD (interfaces pour les opérations de création, lecture, mise à jour et suppression des données) rapidement à partir du modèle de données, ou bien encore d’intégrer des fonctionnalités de recherche, tris et filtres  puissants. 
  • Bien que Nova fournisse des modèles de base, il est également personnalisable. Vous pouvez ajouter des champs et des outils personnalisés pour répondre aux besoins spécifiques de votre application. D’ailleurs chez TheCodingMachine, on adore concevoir des nouveaux champs, métriques ou ressources complètes sur-mesure pour nos clients : n’hésitez pas à suivre notre Github, on prévoit bientôt de mettre à disposition des composants Laravel Nova open-source !
  • Nova est spécialement conçu pour fonctionner en cohérence avec Laravel. Il tire parti des fonctionnalités telles que l’authentification, les autorisations, les migrations de base de données, les modèles Eloquent (détaillé ci-dessous), les validations, etc.
  • Nova intègre un système de gestion des autorisations qui vous permet de définir précisément qui peut accéder à quelles parties du back-office. Vous pouvez gérer les rôles et les autorisations de manière centralisée.

Nova propose un journal d’audit qui enregistre toutes les activités effectuées dans le back-office, ce qui peut être utile pour le suivi de l’activité des utilisateurs et la résolution de problèmes. Il est aussi optimisé pour être performant. 

Enfin, Laravel et Nova disposent d’une grande communauté de développeurs, ce qui signifie que vous pouvez trouver un grand nombre de ressources, de packages complémentaires et de documentation pour vous aider dans votre développement.

D’ailleurs, c’est le fondateur de Laravel qui est le créateur de Laravel Nova !

Exemple d'un back-office généré avec Laravel Nova.

#2. Ce qui est le plus cool : interagir simplement avec la base de donnée

Eloquent est l’ORM (Object-Relational Mapping) inclus avec Laravel. Il fournit une manière simple de travailler avec les bases de données, qu’importe la technologie utilisée (MySQL, MariaDB, PostgreSQL, SQL Server, etc.). 

Un modèle Eloquent est une classe qui représente une table dans votre base de données. Chaque modèle correspond à une table, et chaque instance du modèle correspond à un enregistrement dans cette table. Ces modèles permettent donc d’effectuer des requêtes sur la base de données de manière intuitive, en utilisant une syntaxe orientée objet.

Laravel Nova utilise les modèles Eloquent pour interagir avec les données de la base de données. Pour chaque modèle Eloquent que vous souhaitez gérer via l’interface d’administration de Nova, vous créez une « Resource » Nova correspondante qui définit comment ce modèle est présenté dans l’interface Nova, y compris les champs, les filtres, les actions, etc. 

Et ce qui est très fort, c’est que vos modèles peuvent être liés à d’autres entités (par exemple un utilisateur appartient à une entreprise, ou à l’inverse une entreprise est composée de plusieurs utilisateurs), Laravel Nova sait parfaitement représenter ces informations.

En résumé :  Nova étend la fonctionnalité des modèles Eloquent en fournissant une interface utilisateur graphique pour interagir avec ces modèles.

#3. Les alternatives à Laravel Nova

Il existe de nombreuses alternatives à Laravel Nova que nous allons prochainement tester (stay tuned !) : 

Voyager :

Voyager, souvent appelé l’Admin Panel pour Laravel, est une solution complète qui combine un outil d’administration avec un système de gestion de contenu intégré. Il est particulièrement apprécié pour sa simplicité d’installation et son interface utilisateur. Voyager propose une série de fonctionnalités clés telles que le CRUD (Créer, Lire, Mettre à jour, Supprimer) pour les modèles de base de données, un gestionnaire de rôles et de permissions, et un constructeur de menus, rendant la gestion de l’application Laravel plus efficace et intuitive. 

BackPack for Laravel :

BackPack for Laravel est une collection de packages qui fournit une solution d’administration personnalisable pour les applications Laravel. Il excelle dans la création d’interfaces d’administration complexes, offrant des fonctionnalités telles que la gestion des CRUD, des filtres avancés, et des formulaires avec validation. BackPack se distingue par sa capacité à étendre et personnaliser presque tous les aspects de l’interface d’administration, permettant aux développeurs de créer des back-offices qui s’adaptent parfaitement aux besoins spécifiques de leur application. Avec son architecture modulaire et ses nombreuses options de configuration, BackPack est idéal pour les projets nécessitant une approche plus sur mesure de la gestion de l’administration.

Conclusion

Il est nécessaire de parler des limites de Laravel Nova. D’abord, c’est un outil payant, ce qui peut être un facteur à prendre en compte. Il faut aussi avouer que cet outil vient avec les inconvénients de ses avantages comme par exemple, il est complexe de développer certaines fonctionnalités lorsqu’elles sont fournies en standard. 

Mais pour résumer, utiliser Nova avec Laravel simplifie considérablement la création de back-offices pour les applications web. Cela permet aux développeurs de se concentrer sur la logique métier de leur application plutôt que sur la création d’une interface d’administration complexe. 

Et, si vous souhaitez nous solliciter pour un projet Laravel Nova, n’hésitez pas à me contacter ! 

Laravel Nova, c'est cool - Aurélien Mutin

MVP SAAS Pourquoi et comment le développer rapidement

Faire un MVP (Minimum Viable Product) permet de tester très vite un marché. Comme nos clients, nous avons toujours beaucoup d’idées à tester ! Par exemple, depuis que nous existons, nous avons lancé différents projets de MVP SAAS : 

  • Apideo (2008): API pour permettre la diffusion de flux vidéo en temps réel sur des sites web (imaginez un vendeur qui puisse vous parler directement sur le site internet que vous visitez), 
  • Butterflive (2010): calcul de votre appétence pour un site, interagir sur le site en fonction de votre navigation (pensez à un site qui se transforme au fur et à mesure que vous naviguez), 
  • Domyplaylist (2014): outil pour gérer des playlists depuis Soundcloud ou Youtube pour streamer de la musique gratuitement, 
  • Workadventure (2020): univers que vous pouvez adapter permettant de faire des rencontres en Visio (vous pouvez faire la map de votre bureau, inviter l’ensemble des collaborateurs et interagir comme si vous y étiez). 

Et je dois en oublier ! J’aime encore toutes ces idées même si certaines commencent à dater et nous avons beaucoup appris. Mais je dois avouer que seuls quelques-uns de ces projets ont été commercialisés. Nous ne leur avons pas donné toutes les chances de réussir. Beaucoup de raisons nous ont fait abandonner certains de ces projets : manque de temps et/ou de ressources pour s’en occuper, investissement nécessaire… 

Retour d’expérience : développer un MVP SAAS avec Laravel Spark

Alors, pour tenter de réduire le coût de commercialisation de nos MVP SAAS, nous avons trouvé une solution qui a des limites mais sur laquelle nous pouvons vous faire un retour d’expérience : Laravel Spark

Laravel Spark est un boilerplate payant (99$) qui permet de démarrer très rapidement le développement d’un MVP SAAS. Il fournit de base une gestion des utilisateurs, des logins, des équipes. Il supporte la notion d’abonnement et est fourni avec une intégration à la plateforme de paiement Stripe.

La prise en main n’est pas complètement immédiate. Peut être parce que nous l’avons testé au moment de la migration de Laravel 7 à Laravel 8. Nous avons rencontré quelques problèmes à l’installation que nous avons surmontés. Une fois installé, le produit fait le job. L’écosystème Laravel a évolué très vite récemment (notamment avec des solutions comme Laravel Livewire qui changent complètement la manière de faire du front). Laravel Spark ne bénéficie hélas pas encore de ces évolutions (il reste basé sur l’ancienne manière de gérer le front avec VueJS et le paquet « Laravel UI »).

En bref, ça fonctionne, ce n’est pas forcément « state of the art », mais ça nous a permis d’économiser 2 à 4 semaines de travail et de nous focaliser sur ce qui fait la différence : notre produit.

Faire un MVP SAAS ne doit pas vous faire oublier que de nombreuses autres tâches sont associées au lancement d’une telle plateforme : 

  • en faire parler sur les réseaux,
  • développer une stratégie commerciale, 
  • chercher à satisfaire les premiers clients, 
  • définir une roadmap produit,
  • construire un business model.

Beaucoup d’éléments qui nécessitent de nombreux efforts ! Et des efforts qui doivent être tenus dans le temps (c’est comme cela que nous avons réussi TheCodingMachine). C’est en général là où l’on pèche et que le projet s’arrête. C’est compliqué de gérer un projet de MVP SAAS en parallèle d’une activité qui marche. Mais nous sommes incorrigibles, notre dernier bébé Workadventure nous plaît tellement qu’encore une fois, nous allons le lancer. Nous avons déjà d’ailleurs des premiers succès : organisation du forum PHP 2020 de l’AFUP, événement de recrutement pour la Société Générale ou encore le festival du digital de Nuremberg. 

En résumé :

Si vous souhaitez partager avec nous la manière dont vous gérez vos “side-business”et votre propre retour sur vos projets de MVP SAAS c’est par ici : contact@thecodingmachine.com !

Jean-Guillaume DUJARDIN (CEO)