Présentation
Portfolio
Parcours
J’ai construit ce projet entièrement à partir de zéro. Je l’ai structuré comme un monodépôt NX pour gérer tout le système, même si honnêtement, je pourrais reconsidérer cette décision la prochaine fois car les mises à jour causent souvent de nouveaux problèmes. Pour le backend, j’ai configuré un environnement Docker Compose exécutant PostgreSQL, Redis et Nginx en même temps que mon API. L’API elle-même est construite avec NestJS en utilisant l’adaptateur Fastify et TypeORM pour la gestion de la base de données.
Pour le frontend, j’ai construit à la fois le site web principal et le tableau de bord d’administration au sein d’un seul projet Next.js. L’ensemble de la plateforme est entièrement localisé en anglais et en arabe, et le site fonctionne également comme une application Web progressive (PWA) pour les appareils mobiles. Le système est très dynamique. Presque tout le contenu du site peut être modifié ou supprimé directement du tableau de bord, ce qui facilite la gestion des mises à jour par l’équipe du client.
Bien que la plateforme ne soit pas encore entièrement sortie, elle est actuellement déployée sur un VPS. Pour réduire les coûts avec un budget serré, j’ai utilisé Coolify au lieu de services payants coûteux comme Vercel ou AWS. Comme notre serveur a une RAM et un processeur très limités, j’ai dû trouver des solutions de contournement pour économiser des ressources. Pour éviter de surcharger le serveur lors des compilations, j’ai configuré GitHub Actions pour construire l’API et le site web sous forme d’images Docker et les stocker dans le registre des conteneurs GitHub. Coolify récupère ensuite simplement les dernières images et les redéploie automatiquement dès qu’une mise à jour est disponible.
J’ai également travaillé aux côtés du développeur principal pour ajouter de nouvelles fonctionnalités et mettre en place de nouveaux systèmes.
Pour être honnête, j’ai beaucoup appris de lui, et grâce à ses conseils, j’ai pu m’étendre au développement backend. Cette expérience m’a permis de devenir développeur full-stack capable de maintenir et de créer des systèmes à partir de zéro, où le frontend, le backend et la base de données fonctionnent tous ensemble de manière synchrone.

