Portfolio HadiHz (v3)
Troisième génération de mon site personnel : un frontend Next.js aux visuels 3D et particules, adossé à une API NestJS et Prisma sur AWS.
Aperçu de l'architecture
graph TB
subgraph Frontend["Next.js sur Vercel"]
A[App Router]
B[Composants HeroUI]
C["Spline 3D + tsparticles + cobe"]
end
subgraph Backend["API NestJS"]
D[Contrôleurs REST]
E[Prisma ORM]
F[Documentation Swagger]
G[Limitation de débit]
end
subgraph AWS
H[(Médias S3)]
I[Courriel SES]
end
A --> D
E --> J[(PostgreSQL)]
D --> H & I
Le prédécesseur direct du site que vous lisez, et la première version où le
contenu vivait derrière une véritable API plutôt que dans les sources. Le
frontend est une application Next.js appuyée sur la bibliothèque de composants
HeroUI, avec une scène 3D Spline, un fond tsparticles et un globe cobe pour
porter l'identité visuelle.
Le backend associé est un service NestJS utilisant Prisma sur PostgreSQL. Il gère les envois de médias vers S3 par URL pré-signée, expédie le formulaire de contact via SES, valide sa configuration au démarrage avec Joi et se documente avec Swagger.
Fonctionnalités clés :
- Projets, cours et compétences servis par une API REST typée
- Envois S3 pré-signés : les médias ne transitent jamais par le processus API
- Formulaire de contact acheminé par AWS SES
- Limitation de débit et validation par DTO sur chaque point d'entrée
- Documentation Swagger générée depuis les contrôleurs
- Validation de la configuration au démarrage avec Joi
- Vercel Analytics et Speed Insights intégrés au frontend
Stack technique :
- Frontend : Next.js, React, TypeScript, HeroUI, Tailwind CSS, Spline, tsparticles
- Backend : NestJS, TypeScript, Prisma, Swagger
- Base de données : PostgreSQL
- Infrastructure : Vercel, AWS S3, AWS SES
Retiré au profit de la version actuelle en Astro et Strapi, qui a nettement réduit la charge JavaScript et déplacé l'édition du contenu vers un vrai CMS.