A modern, responsive personal portfolio website built with Next.js 15, featuring a blog, dark/light theme support, and interactive components.
- Modern Design: Clean, responsive design with smooth animations
- Dark/Light Theme: Toggle between dark and light themes
- Blog Section: MDX-powered blog with syntax highlighting
- Interactive Components: Animated cards, theme switcher, and smooth transitions
- SEO Optimized: Structured data, meta tags, and social media cards
- Performance: Optimized images, fonts, and loading states
- Mobile Responsive: Fully responsive design for all devices
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Content: MDX for blog posts
- Animations: Framer Motion
- Theme: next-themes for dark/light mode
- Icons: Lucide React
- Deployment: Vercel
- Node.js 18+
- pnpm (recommended) or npm
- Clone the repository:
git clone https://github.com/hamzabargaz/portfolio.git
cd portfolio
- Install dependencies:
pnpm install
# or
npm install
- Run the development server:
pnpm dev
# or
npm run dev
- Open http://localhost:3020 in your browser.
portfolio/
├── content/ # Blog posts and author data
│ ├── author.json # Author information
│ └── posts/ # MDX blog posts
├── src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # Reusable UI components
│ ├── lib/ # Utility functions and data fetching
│ ├── hooks/ # Custom React hooks
│ ├── assets/ # Icons, images, and styles
│ └── typings/ # TypeScript type definitions
├── public/ # Static assets
└── tailwind.config.js # Tailwind CSS configuration
Create new MDX files in content/posts/
with the following frontmatter:
---
title: "Your Post Title"
date: "2024-01-01"
description: "Post description"
tags: ["nextjs", "react"]
---
Your content here...
Edit content/author.json
to update your personal information, social links, and SEO metadata.
The project uses Tailwind CSS for styling. Custom styles can be added in src/assets/styles/globals.css
.
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm start
- Start production serverpnpm lint
- Run ESLint
The easiest way to deploy is using Vercel:
- Push your code to GitHub
- Import your repository to Vercel
- Deploy with zero configuration
This project is open source and available under the MIT License.
- Website: bargaz.me
- LinkedIn: hamzabargaz
- GitHub: hamzabargaz
- Twitter: hamzabargaz
- Instagram: hamza.bargaz
Built with ❤️ by Hamza Bargaz