A modern, high-performance portfolio website built with cutting-edge technologies to showcase my journey as a Full-Stack Developer and Digital Innovation Leader. This portfolio represents not just my work, but my commitment to excellence, performance, and creating meaningful digital experiences.
| Metric | Desktop | Mobile |
|---|---|---|
| π Performance | ||
| βΏ Accessibility | ||
| π― Best Practices | ||
| π SEO |
Powered by Google Lighthouse
|
|
|
|
- Node.js 18.x or higher
- npm or yarn package manager
# Clone the repository
git clone https://github.com/hamdibenjarrar/Portfolio.git
# Navigate to project directory
cd Portfolio
# Install dependencies
npm install
# Create environment file
cp .env.example .env.local
# Start development server
npm run devVisit http://localhost:3000 to see the portfolio in action! π
# Create optimized production build
npm run build
# Start production server
npm startTo enable the contact form functionality:
- Create a
.env.localfile in the root directory - Add your Gmail credentials:
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-gmail-app-password
EMAIL_TO=recipient@email.comGetting a Gmail App Password:
- Go to Google Account Security
- Enable 2-Step Verification
- Generate an App Password
- Use the 16-character password in
EMAIL_PASS
Portfolio/
βββ π components/ # Reusable React components
β βββ Hero.tsx # Landing hero section
β βββ Skills.tsx # Skills showcase
β βββ Navbar.tsx # Navigation component
β βββ Footer.tsx # Footer component
β βββ ui/ # shadcn/ui components
βββ π pages/ # Next.js pages
β βββ index.tsx # Home page
β βββ about.tsx # About page
β βββ projects.tsx # Projects showcase
β βββ contact.tsx # Contact page
β βββ api/ # API routes
βββ π styles/ # Global styles
βββ π public/ # Static assets
βββ π next.config.js # Next.js configuration
| Page | Description | Key Features |
|---|---|---|
| π Home | Landing page with hero & skills | Animated intro, skills grid, CTA buttons |
| π€ About | Professional journey & experience | Timeline, language proficiency, expertise |
| πΌ Projects | Portfolio of work | Interactive cards, live demos, case studies |
| π¬ Contact | Get in touch | Contact form, social links, location info |
Or manually:
# Install Vercel CLI
npm i -g vercel
# Deploy to production
vercel --prod- Add your domain in Vercel Dashboard β Settings β Domains
- Update DNS records at your registrar:
- A Record:
76.76.21.21 - CNAME:
cname.vercel-dns.com
- A Record:
- β Image optimization with Next.js Image component
- β Priority loading for LCP images
- β Font optimization with next/font
- β Code splitting and lazy loading
- β Minification and compression
- β Security headers for enhanced protection
- β Reduced unused CSS with Tailwind purge
- β Efficient caching strategies
This project is open source and available under the MIT License.
