A personal portfolio built during my web developer training — and kept evolving ever since.
Rendez-vous sur : joe.arkaans.com
This portfolio started as the final project of my web developer certification. Once submitted, instead of archiving it, I kept going — refactoring, adding features, and pushing the infrastructure further than required.
What began as a simple Vercel deployment became a full AWS-hosted application. Not because I had to, but because I wanted to understand how things work in a real production environment. AWS is unavoidable in professional settings, so I figured I'd learn it properly.
Along the way, I covered the entire DevOps lifecycle on my own:
- Plan & Code — feature branches, pull requests, versioning
- Build & Test — CI pipeline with ESLint, dependency audit, and build verification
- Release & Deploy — automated deployment via AWS Amplify on merge to
main - Operate & Monitor — CloudWatch dashboards, 5xx error alerts via SNS
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (SSR) |
| Language | TypeScript |
| Styling | Tailwind CSS + shadcn/ui |
| i18n | next-intl |
| Animations | Framer Motion |
| Hosting | AWS Amplify |
| Data storage | AWS S3 |
| DNS | AWS Route 53 |
| Testing | Jest |
| Monitoring | AWS CloudWatch |
| CI/CD | GitHub Actions |
Every push to dev triggers a GitHub Actions pipeline:
- Dependency install
- ESLint check
- Security audit (
--audit-level=high) - Unit tests
- Production build
Merging to main triggers an automatic deployment on AWS Amplify.
git clone https://github.com/Boutzi/portfolio.git
cd portfolio
npm install --legacy-peer-depsCreate a .env file at the root with the following variables:
# GITHUB
NEXT_PUBLIC_GITHUB_BEARER_TOKEN=
# AWS S3
NEXT_PUBLIC_S3_BUCKET_URL=https://joe-portfolio-data.s3.eu-west-3.amazonaws.com
# NODEMAILER
NEXT_PUBLIC_GMAIL_USER=
NEXT_PUBLIC_GMAIL_PASSWORD=
NEXT_PUBLIC_PROTONMAIL_USER=npm run devThis project is open source. Feel free to explore the code, get inspired, or reach out if you have questions.