A fully responsive, SEO-optimized, and performance-focused developer portfolio built with Next.js 16 (App Router) and Tailwind CSS.
Includes a modular component system, MDX-powered blog and project pages, dynamic metadata, smooth animations, API integrations, and a clean, modern UI.
-
Next.js App Router with server-side rendering & dynamic routing
-
Tailwind CSS for utility-first, responsive styling
-
MDX-powered blog & project pages with automatic parsing
-
SEO optimized (OpenGraph images, sitemap, robots, metadata)
-
Fully responsive layout for all devices
-
Smooth animations & interactive UI components
-
Dark/Light Theme Switching
-
GitHub Contributions visualizer
-
Reusable component architecture (Hero, Tech Stack, Cards, Grids, etc.)
-
Resume download, custom sections & static content
-
Content-layer architecture using
content/+ MDX
-
Framework: Next.js 14 (App Router)
-
Styling: Tailwind CSS
-
Content: MDX
-
Icons/Graphics: Custom SVGs from techicons.dev
-
Deployment: Vercel
-
Utilities: TypeScript, ESLint, Prettier
.
├── app
│ ├── blog
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ └── [slug]
│ │ └── page.tsx
│ ├── favicon.ico
│ ├── globals.css
│ ├── layout.tsx
│ ├── opengraph-image.tsx
│ ├── page.tsx
│ ├── providers.tsx
│ ├── robots.ts
│ ├── sitemap.ts
│ └── work
│ ├── layout.tsx
│ ├── page.tsx
│ └── [slug]
│ └── page.tsx
│
├── components
│ ├── BannerImage.tsx
│ ├── BannerOverlay.tsx
│ ├── BlogCard.tsx
│ ├── ContactForm.tsx
│ ├── ExperienceContent.tsx
│ ├── Footer.tsx
│ ├── GithubContributions.tsx
│ ├── HeroSection.tsx
│ ├── logoText.tsx
│ ├── NavBar.tsx
│ ├── ProfileCard.tsx
│ ├── ProjectCard.tsx
│ ├── ReachMeOut.tsx
│ ├── ScrollToTop.tsx
│ ├── SectionBorder.tsx
│ ├── TechStack.tsx
│ ├── theme-switcher.tsx
│ └── ui/
│ ├── button.tsx
│ ├── container-text-flip.tsx
│ ├── grid-pattern-background.tsx
│ ├── resizable-navbar.tsx
│ ├── scroll-progress.tsx
│ ├── shimmer-button.tsx
│ └── tooltip.tsx
│
├── components.json
│
├── content
│ ├── blogs/*.mdx
│ └── projects/*.mdx
│
├── data
│ └── projects.ts
│
├── lib
│ ├── blog.ts
│ ├── mdx.ts
│ └── utils.ts
│
├── public
│ ├── profile.png
│ ├── profile-light.png
│ ├── resume.pdf
│ ├── projects/*.png
│ └── tech/*.svg
│
├── next.config.ts
├── tsconfig.json
├── package.json
└── README.md
git clone https://github.com/xyzprtk/prtkfolio.git
cd prtkfolionpm install
# or
yarn install
# or
pnpm installCreate a .env.local file in the root:
touch .env.localAdd any required environment values (optional components):
# NEXT_PUBLIC_SITE_URL= https://your-domain.com
If you use Vercel to deploy, add this under "Environment Variables"
npm run devThe app will be available at:
http://localhost:3000
npm run build
npm startOr deploy directly to Vercel:
vercel deployAdd posts under:
content/blogs/*.mdx
content/projects/*.mdx
Example front-matter:
---
title: "Linux as a Daily Driver"
description: "Notes on using Linux day to day"
date: "2024-11-15"
cover: "/projects/linux.png"
---
Your MDX content here...MDX supports:
-
Code blocks
-
Custom components
-
Syntax highlighting
-
Markdown + JSX
Edit:
data/projects.ts
Or add MDX pages inside:
content/projects/
Each project includes:
-
Title
-
Description
-
Tags
-
Links
-
Cover image
npm run lintThe portfolio is fully optimized for:
-
Vercel
-
Netlify
-
GitHub Pages (Next export)
Best experience: Vercel.
This is a personal portfolio, but feel free to fork the repo or use the structure for your own portfolio.This is primarily a personal project,but contributions that improve performance, accessibility, documentation, UI, or overall developer experience are always welcome. For any contributions, refer to CONTRIBUTING.md for instructions.
MIT License.