A modern, responsive portfolio website built with Next.js 15, featuring a blog, dark mode, and optimized for Vercel deployment.
- Modern Design: Clean, professional design with blue color scheme
- Dark/Light Mode: Toggle between themes with next-themes
- Responsive: Mobile-first design that works on all devices
- Blog System: Markdown-based blog with syntax highlighting
- Comments: Giscus integration for blog comments
- SEO Optimized: Proper metadata and Open Graph tags
- Performance: Optimized images, lazy loading, and code splitting
- Analytics: Vercel Analytics integration
- Contact Form: Working contact form with API endpoint
- Hero: Introduction with profile photo and social links
- About: Personal bio and mission statement
- Experience: Timeline of work experience
- Education: Academic background and certifications
- Projects: Portfolio of featured projects
- Skills: Technical skills with progress indicators
- Publications: Articles and conference talks
- Blog: Technical blog posts
- Contact: Contact form and information
- Framework: Next.js 15 with App Router
- Styling: Tailwind CSS with custom design system
- TypeScript: Full type safety
- Content: Markdown with gray-matter and remark
- Icons: Lucide React and React Icons
- Analytics: Vercel Analytics
- Comments: Giscus (GitHub Discussions)
- Deployment: Optimized for Vercel
-
Install dependencies:
npm install
-
Run development server:
npm run dev
-
Build for production:
npm run build
-
Start production server:
npm start
-
Connect to Vercel:
- Push code to GitHub
- Connect repository to Vercel
- Deploy automatically
-
Environment Variables:
- No environment variables required for basic functionality
- Add email service credentials for contact form if needed
-
Custom Domain:
- Configure custom domain in Vercel dashboard
- Update social media links and metadata accordingly
Update personal details in:
components/sections/Hero.tsx- Name and titlecomponents/sections/About.tsx- Bio and missioncomponents/sections/Experience.tsx- Work historycomponents/sections/Education.tsx- Education and certificationscomponents/sections/Projects.tsx- Portfolio projectscomponents/sections/Publications.tsx- Articles and talksapp/layout.tsx- SEO metadata
- Blog Posts: Add markdown files to
content/posts/ - Resume: Replace
public/resume.pdfwith actual resume - Images: Add profile and project images to
public/images/
- Colors: Update
tailwind.config.tsfor different color schemes - Fonts: Change fonts in
app/layout.tsx - Theme: Customize CSS variables in
app/globals.css
- Enable GitHub Discussions on your repository
- Install the Giscus app
- Update
components/blog/Comments.tsxwith your:- Repository name
- Repository ID
- Category ID
- Lighthouse Score: 100/100 (when properly configured)
- Core Web Vitals: Optimized for LCP, CLS, and FID
- Bundle Size: Under 200KB first load
- Images: Next.js Image optimization with lazy loading
- Metadata: Dynamic metadata for all pages
- Open Graph: Social media sharing optimization
- Structured Data: JSON-LD for search engines
- Sitemap: Automatically generated
- Robots.txt: SEO-friendly crawling rules
MIT License - feel free to use this template for your own portfolio.
For questions or issues:
- Create an issue on GitHub
- Email: contact@fernandojacob.com
- LinkedIn: linkedin.com/in/fernandojacob