Bonne nouvelle : le site portfolio tourne vers un nouveau design simple ainsi qu’un nouveau langage de programmation. Dans cet article, je vous explique en détail les étapes qui m’ont permis de migrer mon portfolio vers cette nouvelle version et nouveau langage.
Contexte
Au départ, mon site portfolio fonctionnait avec le langage de programmation PHP ainsi que le framework Laravel 11. Cependant, j’ai constaté quelques problèmes et ce pour 3 raisons.
1. La structure du projet est de + en + complexe
En effet, comme le projet tamdaz.fr tournait sous Laravel 11, au fil des ajouts j’ai remarqué une accumulation importante de fichiers PHP. Après analyse, le projet comptait environ 300 fichiers PHP (hors les dossiers vendor et storage); de mon point de vue, cela rend le projet moins maintenable dans le temps et la structure du projet moins lisible.
2. Certaines fonctionnalités ne sont pas nécessaires
Par exemple, les middlewares ajoutés par défaut pour le framework concerné ne me sont pas utiles dans le cadre de mon portfolio. Idem pour le système d’authentification : il est trop lourd pour l’usage que j’en fais, et je n’ai pas besoin d’un tel niveau de gestion des accès. Ces fonctionnalités, bien qu’intéressantes dans d’autres projets, alourdissent ici l’architecture sans aucun intérêt.
3. Migration à une autre version de Laravel difficile
Effectivement, passer d’une version de Laravel à une autre est une tâche compliquée à effectuer. Cependant, Laravel Shift est un outil qui ne correspond pas à mes approches car il s’agit d’un service payant. En revanche, j’ai tendance à garder le contrôle sur mon code et limiter la dépendance à des outils externes.
Laravel reste néanmoins un framework complet et puissant, avec de nombreuses fonctionnalités utiles. Mais dans le cadre de mon portfolio, ces fonctionnalités sont parfois trop lourdes pour des besoins simples.
Ces raisons expliquent pourquoi je n’utiliserai plus Laravel pour mon portfolio. J’ai donc décidé d’en effectuer une refonte complète et de le réorganiser en 3 parties.
Choix des langages et des dépendances
api.tamdaz.fr
Pour ce premier projet, j’aimerai organiser son architecture ainsi que le code lui-même pour faire en sorte que celui-ci soit compréhensible pour moi ainsi que d’autres développeurs qui souhaiteraient lire et comprendre ma façon d’organiser mon code.
Cet API est responsable de traiter les données de mon portfolio, tels que les blogs, les catégories, les certifications, les compétences, les comptes-rendus, les expériences, les projets ainsi que les articles de la veille technologique.
J’ai choisi le framework Athena pour la bonne des simples raisons que qu’il a presque la même approche que le framework Symfony. De plus, les annotations (qui sont propres au langage Crystal) font que je pousse à développer ce premier projet. Cela a pour avantage de favoriser l’ajout de métadonnées et de paramétrer ces annotations plus facilement.
Si vous êtes intéressés, vous pouvez le consulter sur le dépôt Codeberg : https://codeberg.org/tamdaz/api.tamdaz.fr.
admin.tamdaz.fr
admin.tamdaz.fr qui est une application web qui permet d'administrer le site portfolio plus facilement. Elle sera écrite de préférence en TypeScript avec la bibliothèque React ; je serai la seule personne à administrer mon portfolio. Le panneau d’administration va communiquer avec l’API pour la gestion des données de mon portfolio.
En dessous de l’interface utilisateur, des informations système telles que le pourcentage du CPU utilisé, le nombre de cœurs, la mémoire utilisée par l’API et la version du langage Crystal servent à surveiller le serveur sur lequel le portfolio est hébergé.
Par ailleurs, ce projet est disponible sur Codeberg si vous souhaitez explorer le code : https://codeberg.org/tamdaz/admin.tamdaz.fr.
www.tamdaz.fr
Après avoir finalisé le panneau d’administration, j’ai développé le site vitrine afin qu’il soit accessible à tous. Pour cela, j’ai choisi de rester sur le langage Crystal et d’utiliser le micro-framework Kemal pour la gestion des routes.
Kemal est léger et adapté aux projets nécessitant de bonnes performances, notamment pour la génération des pages web, du flux RSS et du sitemap, tout en conservant une syntaxe simple. J’ai intégré le moteur de templates Crinja afin de générer des pages HTML et ainsi d’optimiser le référencement (SEO) des pages les plus importantes.
L’objectif principal de ce site vitrine est de présenter mon parcours, mes compétences, mes expériences et mes projets de manière organisée et facilement accessible aux visiteurs. Le fait de coller Kemal et Crinja entre eux me permet d’avoir un rendu côté serveur qui va être optimisé. Ce qui permet aux moteurs de recherche d’indexer les pages plus facilement.
En plus de cela, il est possible de s’abonner au flux RSS pour vous permettre d’être au courant de nouveaux articles.
Le code source de www.tamdaz.fr reste cependant fermé. Néanmoins, vous pouvez vous inspirer du design et de l’organisation visuelle du site si jamais vous aurez l’occasion de créer votre propre portfolio.
Enfin, pour ce site vitrine, j’ai décidé de limiter le nombre de fichiers JavaScript car je souhaite garantir la navigation. Cela permet de rendre ce site fonctionnel, surtout si un client le désactive dans son navigateur.
Conclusion
La migration de mon portfolio a pris à peu près 3 mois et demi pour développer, tester et rendre opérationnel l’API, le panneau d’administration ainsi que le site vitrine (du 30 mai au 20 septembre 2025). C’est un type d’organisation que j’apprécie et qui m’a permis d’organiser la structure de chaque projet à ma propre manière.
# Remerciements
Je souhaite remercier George Dietrich (@Blacksmoke16) pour son aide et ses conseils lors du développement de l’API de mon portfolio avec son framework Athena ainsi que ses composants.