This portfolio
Le site que vous lisez : un frontend Next.js, une API Express et MongoDB, en anglais, français et arabe, avec un espace d'administration qui gère chacun de ses mots. Construit, testé et déployé sur un VPS de bout en bout.

Réalisé avec
- TypeScript
- Next.js
- React
- Tailwind CSS
- shadcn/ui
- Radix UI
- TanStack Query
- React Hook Form
- Zod
- Node.js
- Express
- MongoDB
- Mongoose
- JSON Web Tokens
- Docker
- Docker Compose
- Caddy
- Vitest
- Playwright
- GitHub Actions
- Linux
Rôle
Tout : le design, le frontend, l'API, la base de données, les tests, le déploiement.
Le problème
Trois langues, dont une qui se lit de droite à gauche, et chaque mot de la page stocké plutôt qu'écrit dans le code — pour qu'ajouter une langue soit du contenu et de la configuration, jamais un changement de schéma.
Approche
Chaque chaîne stockée est une table indexée par langue dont seule la langue par défaut est requise, et la mise en page utilise partout des propriétés logiques plutôt que gauche et droite. L'alternative — une colonne par langue — a été écartée : elle ferait d'une quatrième langue une migration au lieu d'un dossier.
Résultat
En ligne sur un VPS derrière un reverse proxy avec TLS automatique, l'espace d'administration sur son propre domaine, et une suite de plus de 1 500 tests qui tourne à chaque push.