A modern, interactive portfolio website built with Next.js, React, and Tailwind CSS. Features smooth animations, responsive design, and a contact form for reaching out.
git clone https://github.com/sumaid365/sumaid-portfolio.git
cd portfolio
npm install
.env.local file in the root directory and add your environment variables:
NEXT_PUBLIC_API_KEY=your_api_key_here
npm run dev
http://localhost:3000 to view your portfolionpm run build
npm start
The easiest way to deploy your Next.js portfolio is using Vercel:
portfolio/
├── components/ # Reusable React components
│ ├── NavBar.js # Navigation bar
│ ├── ProjectCard.js # Project showcase cards
│ ├── Skills.js # Skills section
│ ├── Certifications.js # Certifications display
│ ├── ContactForm.js # Contact form component
│ ├── MatrixBox.js # Matrix animation
│ ├── Terminal/ # Terminal component
│ └── ...
├── pages/ # Next.js pages
│ ├── index.js # Home page
│ ├── _app.js # App wrapper
│ ├── _document.js # Custom document
│ └── api/ # API routes
├── styles/ # Global styles
├── public/ # Static assets
├── fonts/ # Custom fonts
├── hooks/ # Custom React hooks
├── tailwind.config.js # Tailwind configuration
└── package.json # Dependencies
pages/index.js to add your personal informationtailwind.config.jsEdit the ProjectCard component data to showcase your work:
const projects = [
{
title: "Project Name",
description: "Project description",
link: "https://project-link.com",
// ... other properties
},
// Add more projects
];
Tailwind CSS is pre-configured. Modify tailwind.config.js to customize:
npm run dev - Start development servernpm run build - Build for productionnpm start - Run production servernpm run lint - Run ESLintThe contact form uses Resend for email delivery. To set it up:
.env.local:
NEXT_PUBLIC_RESEND_API_KEY=your_resend_api_key
pages/api/ to handle form submissionsThis project is open source and available under the MIT License.
Contributions are welcome! Feel free to fork this repository and submit pull requests for any improvements.
For security best practices, see SECURITY.md
If you have any questions or issues, please open an issue on GitHub.
Made with ❤️ using Next.js