A modern, responsive portfolio website template built with Next.js 14, TypeScript, and Tailwind CSS. Features dark mode, smooth animations, and interactive components. Designed to be fully customizable to showcase your unique skills and projects. Optimized for SendGrid and Vercel for deployment, but can be adapted for other service providers.
- 🌓 Dark/Light mode with system preference detection
- 🎨 Smooth animations and transitions
- 📱 Fully responsive design
- 🎵 Optional integrations (Spotify, SoundCloud, etc.)
- 📧 Contact form with SendGrid integration
- 🎮 Project showcase with live demos
- 🔍 SEO optimized
- 🚀 Optimized for performance
- 🧩 Modular components you can add, remove, or modify
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- Lucide Icons
- SendGrid API (replaceable with your preferred email service)
- Node.js 18+
- Windows OS
- npm (comes with Node.js)
- Clone the repository:
git clone https://github.com/zainibeats/nodejs-portfolio-template
cd nodejs-portfolio-template
- Install dependencies:
npm install
- Create a
.env.local
file in the root directory:
SENDGRID_API_KEY=your_sendgrid_api_key
ADMIN_EMAIL=[email protected]
SENDER_EMAIL=[email protected]
- Start the development server:
npm run dev
- Open http://localhost:3000 in your browser.
- Create a production build:
npm run build
- Start the production server:
npm start
This template is designed to be highly modular and customizable. Here's how to make it your own:
Look for the following types of placeholder content that need to be replaced:
- ALL CAPS TEXT - Replace any text in ALL CAPS (e.g.,
TITLE 1
,COMPANY
,PERIOD
,KEYWORD 1
) with your own content - Placeholder URLs - Replace URLs like
https://github.com/yourusername
with your actual URLs - Sample projects - Replace the sample projects in
src/data/projects.ts
with your own projects - Profile information - Update all personal information in the components
The following sections are designed to be optional and can be completely removed or replaced:
-
Music Section: If you have no need for a Music section, you can:
- Remove it entirely by deleting the import and component in
src/app/page.tsx
- Replace it with another section relevant to your field (e.g., "Publications", "Speaking", etc.)
- Modify it to showcase other media types (e.g., YouTube videos, podcasts)
- Remove it entirely by deleting the import and component in
-
Development/Projects Sections: Customize to match your specific work or field
The template includes common social media icons, but you can easily modify them:
- Change the icons in
src/components/Header.tsx
andsrc/components/Footer.tsx
- Import different icons from
react-icons
orlucide-react
- Update the
socialLinks
array to match your online presence
To modify the overall structure:
- Edit the component imports/order in
src/app/page.tsx
- Modify the navigation items in
src/components/Header.tsx
- Update the corresponding section components in
src/components/
This template uses SendGrid and Vercel by default, but you can substitute them:
-
Email Service Provider:
- The contact form implementation is in
src/app/api/contact/route.ts
- Replace the SendGrid implementation with your preferred email API (e.g., Mailgun, AWS SES)
- Update the environment variables accordingly
- The contact form implementation is in
-
Deployment Platform:
- While optimized for Vercel, you can deploy to any platform that supports Next.js
- For other platforms (Netlify, AWS Amplify, etc.), consult their Next.js deployment documentation
- Adjust the
next.config.js
as needed for your chosen platform
nodejs-portfolio-template/
├── public/ # Static files
│ ├── assets/ # Images, videos, and other media
│ └── files/ # Downloadable files
├── src/
│ ├── app/ # Next.js app router pages
│ │ └── api/ # API routes (including contact form endpoint)
│ ├── components/ # React components (modular sections)
│ ├── data/ # Static data files (projects, content)
│ ├── styles/ # Global styles
│ └── types/ # TypeScript type definitions
├── next.config.js # Next.js configuration
├── tailwind.config.js # Tailwind CSS configuration
└── tsconfig.json # TypeScript configuration
Each component is independent and can be modified or removed as needed:
Header
: Navigation and theme toggleHero
: Landing section with profileDevelopment
: Projects showcase sectionSkills
: Skills and technologies sectionExperience
: Work history sectionMusic
: Media integration section (removable/replaceable)About
: Personal information sectionContact
: Contact form with SendGrid integration (customizable)Footer
: Site footer with links
The project is configured for deployment on Vercel with the following optimizations:
- Static asset optimization
- Content Security Policy headers
- Standalone output
- Cross-origin resource sharing
You can deploy to other platforms that support Next.js by following their specific deployment guides and making any necessary configuration adjustments.
Required environment variables for production when using SendGrid:
SENDGRID_API_KEY=your_sendgrid_api_key
ADMIN_EMAIL=[email protected]
SENDER_EMAIL=[email protected]
If using an alternative email service, adjust these variables according to your provider's requirements.
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- SendGrid requires verified sender emails
- Some browsers may require enabling JavaScript for full functionality
- Local development requires Node.js 18 or higher
MIT License - feel free to use this project as a template for your own portfolio!