A modern, responsive portfolio website built with Next.js, featuring a showcase of projects, blog posts, and professional information. This website demonstrates full-stack development skills with a focus on modern web technologies and best practices.
- Project Gallery: Display of professional projects with technology tags
- Technology Filtering: Filter projects by technology stack (sorted by frequency)
- Responsive Design: Optimized for all device sizes
- Project Details: Each project includes description, technologies, live links, and GitHub repositories
- Markdown Support: Write blog posts using Markdown with syntax highlighting
- Category Organization: Organize posts by categories and tags
- External Blog Support: Link to external blog posts
- About Section: Professional background and skills overview
- Timeline: Work and education history with interactive timeline
- Skills Display: Categorized skill sets with visual representations
- Contact Form: Professional contact form with validation
- Dark/Light Theme: Toggle between themes with persistent storage
- Responsive Navigation: Mobile-friendly navigation with hamburger menu
- SEO Optimized: Meta tags, Open Graph, and Twitter Card support
- Performance: Lazy loading, and efficient rendering
- Accessibility: ARIA labels and keyboard navigation support
- Next.js 12+ - React framework with SSR/SSG
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Twin.macro - CSS-in-JS with Tailwind
- Emotion - CSS-in-JS styling
- React Icons - Icon library (FontAwesome, Devicons, etc.)
- React Modal - Modal dialogs
- React Transition Group - Animation transitions
- Anime.js - Advanced animations
- Markdown Processing - React Markdown with remark plugins
- Syntax Highlighting - React Syntax Highlighter with Prism themes
- Image Optimization - Cloudinary integration for responsive images
- ESLint - Code linting and formatting
- Prettier - Code formatting
- TypeScript - Type checking and compilation
next-portfolio-blog/
βββ components/ # React components
β βββ BlogPosts/ # Blog-related components
β βββ Common/ # Shared components (Header, Footer, etc.)
β βββ Layout/ # Layout components
β βββ pages/ # Page-specific components
βββ content/ # Content data
β βββ blogs/ # Markdown blog posts
β βββ projects.ts # Project data
β βββ experienceItems.ts # Timeline data
βββ hooks/ # Custom React hooks
βββ pages/ # Next.js pages
βββ public/ # Static assets
βββ styles/ # Global styles and theme
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
- Node.js 18+
- Yarn or npm
- Git
git clone https://github.com/prateekkarki/next-portfolio-blog.git
cd next-portfolio-blogyarn install
# or
npm installCreate a .env.local file in the root directory:
# Site Configuration
NEXT_PUBLIC_SITE_URL=http://localhost:3000
# Resume Access (Optional)
NEXT_PUBLIC_RESUME_CODE=your_access_code
NEXT_PUBLIC_RESUME_LINK=https://your-resume-link.com
# Contact Form (Formspree)
# The form is pre-configured with Formspree, but you can update the endpoint
# Analytics (Optional)
NEXT_PUBLIC_GA_ID=your_google_analytics_idyarn develop
# or
npm run developOpen http://localhost:3000 in your browser.
Edit content/projects.ts:
export const projects: Project[] = [
{
id: 1,
title: "Project Name",
description: "Project description...",
technologies: ["React", "Node.js", "TypeScript"],
image: {
src: "project-image-url",
width: 600,
height: 400
},
link: "https://live-project.com",
github: "https://github.com/username/project",
gallery: [
{ src: "screenshot1.jpg", width: 800, height: 600 }
],
backgroundColor: "#f0f0f0"
}
];- Create a new Markdown file in
content/blogs/
Your blog content here...- Update
content/blogsData.tswith the new post information
export const projects: Project[] = [
{
id: 5,
title: 'Blog title',
slug: 'blog-markdown-filename',
tagline: '...',
featured: true,
publishedOn: '2024-01-20',
updatedAt: '2024-01-20',
createdAt: '2024-01-20',
isExternal: true, // for external URLs
externalUrl: 'https://...', // for external URLs
thumbnail: {
url: '...',
},
category: {
title: '...',
slug: '...',
},
tags: [
{
title: '...',
slug: '...',
}
],
},
];Edit content/skillCategories.ts to modify your skills display:
export const skillCategories = [
frontend: {
label: 'Frontend Development',
skills: [
{ name: 'React.js', level: 90 },
// ...
],
},
];Update tailwind.config.js to customize your color scheme:
module.exports = {
theme: {
extend: {
colors: {
primary: '#your-primary-color',
secondary: '#your-secondary-color',
// ... other colors
}
}
}
}- Global Styles: Edit
assets/css/styles.css - Component Styles: Use Twin.macro with Tailwind classes
- Theme Variables: Define in
types/twin.d.ts
- Push your code to GitHub
- Connect your repository to Vercel
- Configure environment variables
- Deploy automatically on push
The project is compatible with:
- Netlify
- AWS Amplify
- DigitalOcean App Platform
- Any Node.js hosting platform
# Development
yarn develop # Start development server
yarn build # Build for production
yarn start # Start production server
yarn lint # Run ESLint
yarn type-check # Run TypeScript type checking- ESLint: Configured with React and TypeScript rules
- Prettier: Automatic code formatting
- TypeScript: Strict type checking enabled
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js Team - For the amazing React framework
- Tailwind CSS - For the utility-first CSS framework
- React Community - For the excellent ecosystem
- Open Source Contributors - For the libraries and tools used
- Website: meetprateek.com
- Email: info@meetprateek.com
- GitHub: @prateekkarki
- LinkedIn: Prateek Karki
Built with β€οΈ using Next.js, React, and TypeScript