A modern, responsive portfolio website built with Next.js 15, React, TypeScript, and Tailwind CSS. Features smooth animations, dark/light mode toggle, and a professional design showcasing 30+ years of experience in international trade and manufacturing operations.
git clone <your-repo-url>
cd cv-portfolio-site
npm install
npm run dev
Edit the constants in src/lib/constants.ts
:
export const PERSONAL_INFO = {
name: 'Your Name',
title: 'Your Title',
tagline: 'Your tagline',
email: 'your.email@example.com',
location: 'Your Location',
bio: 'Your bio description',
};
Update the EXPERIENCES
array in src/lib/constants.ts
with your work history:
export const EXPERIENCES: Experience[] = [
{
id: '1',
company: 'Company Name',
position: 'Your Position',
duration: '2022 - Present',
location: 'Location',
description: ['Achievement 1', 'Achievement 2'],
technologies: ['Tech 1', 'Tech 2']
},
// Add more experiences
];
Modify the SKILLS
array to reflect your technical competencies:
export const SKILLS: SkillCategory[] = [
{
category: 'Frontend',
skills: [
{ name: 'React', level: 'Expert' },
// Add your skills
]
},
// Add more categories
];
Update the PROJECTS
array with your portfolio projects:
export const PROJECTS: Project[] = [
{
id: '1',
title: 'Project Name',
description: 'Project description',
technologies: ['Tech 1', 'Tech 2'],
image: '/projects/project-image.jpg',
liveUrl: 'https://project-url.com',
githubUrl: 'https://github.com/username/project',
featured: true
},
// Add more projects
];
public/
and uncomment the Image component in src/components/sections/about.tsx
public/projects/
and update the image paths in the projects datapublic/resume.pdf
The contact form is set up to work with Formspree. To activate it:
src/components/sections/contact.tsx
:const response = await fetch('https://formspree.io/f/YOUR_FORM_ID', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(formData),
});
Update the SOCIAL_LINKS
array in src/lib/constants.ts
with your social media profiles.
The site uses a professional blue color palette. To customize:
src/app/layout.tsx
src/
├── app/ # Next.js App Router
│ ├── layout.tsx # Root layout with theme provider
│ ├── page.tsx # Main page with all sections
│ └── globals.css # Global styles
├── components/
│ ├── sections/ # Main page sections
│ │ ├── hero.tsx # Hero/landing section
│ │ ├── about.tsx # About section
│ │ ├── experience.tsx # Experience timeline
│ │ ├── skills.tsx # Skills showcase
│ │ ├── portfolio.tsx # Projects portfolio
│ │ └── contact.tsx # Contact form
│ ├── ui/ # Reusable UI components
│ │ ├── navigation.tsx # Sticky navigation
│ │ └── theme-toggle.tsx # Dark/light mode toggle
│ └── providers/
│ └── theme-provider.tsx # Theme context provider
├── lib/
│ ├── constants.ts # Site data and configuration
│ └── utils.ts # Utility functions
└── types/
└── index.ts # TypeScript type definitions
The site is optimized for deployment on Vercel, Netlify, or any static hosting service.
npm run build
npm start
Feel free to fork this project and customize it for your own use. If you find bugs or have suggestions for improvements, please open an issue or submit a pull request.
This project is open source and available under the MIT License.