HadiHz Portfolio (v3)
The third generation of my personal site: a Next.js front end with 3D and particle visuals, backed by a NestJS and Prisma API on AWS.
Architecture Overview
graph TB
subgraph Frontend["Next.js on Vercel"]
A[App Router]
B[HeroUI components]
C["Spline 3D + tsparticles + cobe"]
end
subgraph Backend["NestJS API"]
D[REST controllers]
E[Prisma ORM]
F[Swagger docs]
G[Rate limiting]
end
subgraph AWS
H[(S3 media)]
I[SES email]
end
A --> D
E --> J[(PostgreSQL)]
D --> H & I
The direct predecessor of the site you are reading now, and the first version
where the content lived behind a real API instead of in source files. The front
end is a Next.js application leaning heavily on the HeroUI component library,
with a Spline 3D scene, a tsparticles background and a cobe globe carrying the
visual identity.
The companion backend is a NestJS service using Prisma against PostgreSQL. It handles media uploads to S3 through pre-signed URLs, sends contact-form mail via SES, validates its own configuration with Joi at boot, and documents itself with Swagger.
Key Features:
- Project, course and skill content served from a typed REST API
- Pre-signed S3 uploads so media never transits the API process
- Contact form delivered through AWS SES
- Request throttling and DTO-level validation on every endpoint
- Swagger documentation generated from the controllers
- Boot-time configuration validation with Joi
- Vercel Analytics and Speed Insights wired into the front end
Tech Stack:
- Frontend: Next.js, React, TypeScript, HeroUI, Tailwind CSS, Spline, tsparticles
- Backend: NestJS, TypeScript, Prisma, Swagger
- Database: PostgreSQL
- Infrastructure: Vercel, AWS S3, AWS SES
Retired in favour of the current Astro and Strapi build, which cut the JavaScript payload dramatically and moved content editing into a proper CMS.