Command palette global search (Ctrl+K/Cmd+K) with fuzzy matching, tag filtering, and keyboard navigation
nextjs-portfolio-template — Next.js Portfolio Template
By ShardulJunagade
A personal portfolio website template built with Next.js 15, TypeScript, and Tailwind CSS, including command palette search, Markdown blog, Jupyter Notebook rendering, and multiple content page types.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Markdown-based content management for blog, projects, publications, experience, and updates
Supports Jupyter Notebook rendering, organized with meta.yaml and .ipynb files
Dark/light mode and system preference detection via next-themes
Uses Next.js App Router dynamic routes to generate individual pages for blog, projects, publications, and more
Includes a contact form with validation and a resume PDF
Template Details
This template is a personal portfolio website built with Next.js 15, TypeScript, and Tailwind CSS. The README states it includes command palette global search (Ctrl+K/Cmd+K) with fuzzy matching, tag filtering, and keyboard navigation; the interface is mobile-first responsive and provides dark/light mode with system preference detection via next-themes.
Content management is primarily based on Markdown files: blog posts, projects, publications, experience, and updates are placed in corresponding directories under src/content, and Jupyter Notebooks are stored as folders containing meta.yaml metadata and .ipynb files. Pages are generated via Next.js App Router dynamic routes for individual pages such as blog posts, projects, and publications, and it includes a resume PDF and a contact form with validation. The README also mentions use of the Next.js metadata API, semantic HTML, ARIA labels, and keyboard support.
The README does not provide specific deployment steps, environment variable requirements, dependency version numbers, or performance data, nor does it state the template's production readiness.
Is it right for your project?
Use Cases
- Building a personal portfolio website to showcase blog, projects, and publications
- Publishing data science or technical articles that include Jupyter Notebooks
- Maintaining an experience timeline and latest updates with Markdown
- Personal sites that need global search to quickly locate on-site content
Suitable For
- Developers using Next.js and TypeScript
- Individuals who need to showcase technical articles, projects, and academic publications
- Users who want to manage content with Markdown and Notebooks
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Clone the repository: git clone https://github.com/ShardulJunagade/nextjs-portfolio-template
- 2
Install dependencies: npm install
- 3
Start the development server: npm run dev, and visit http://localhost:3000
- 4
Common commands include npm run build, npm run start, npm run lint, and npx prettier --write .
- 5
The README does not provide deployment steps or environment variable instructions
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis
Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- Partly documented · 74 / 100
- Technologies
- Next.js · React
- Website type
- Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2025-06-30
- Screenshot last checked
- 2026-10-14
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: codex-user-requested-batch-review-20261015 · 2026-10-15
Inspect the recorded source material
SHA-256: 9cbd9a27db73c300b43cf08da180ede88fcb07a192efdd9e63aaed1c1cab4570
2026-10-14T08:44:30.450Z
Source file / repository# Next.js Portfolio Template
A comprehensive, modern portfolio website built with Next.js 15, TypeScript, and Tailwind CSS. Features advanced search functionality with a global command palette, Jupyter Notebook integration, dynamic content management, and a professional design system.
## 📑 Table of Contents
- [✨ Features](#features)
- [🚀 Getting Started](#getting-started)
- [📁 Project Structure](#project-structure)
- [🎨 Customization](#customization)
- [📝 Blog Posts](#blog-posts)
- [📓 Jupyter Notebooks](#jupyter-notebooks)
- [🛠️ Projects](#projects)
- [📚 Publications](#publications)
- [💼 Experience & Updates](#experience--updates)
- [📄 License](#license)
- [🤝 Contributing](#contributing)
## Features
- **Modern Tech Stack**: Next.js 15, TypeScript, Tailwind CSS
- **Search Palette**: Command palette-style global search (Ctrl+K/Cmd+K), fuzzy matching, tag-based filtering and keyboard navigation
- **Responsive Design**: Mobile-first, clean UI, dark/light mode with system preference detection (`next-themes`)
- **Content Management**: Markdown-based blog, Jupyter Notebook rendering, project showcase, publications, timeline, updates, resume PDF, and validated contact form
- **SEO & Accessibility**: Next.js metadata API, semantic HTML, ARIA labels, keyboard support
- **Dynamic Routing**: Individual pages for blog posts, projects, publications, and more
## Getting Started
To run this project locally, follow these steps:
1. Clone the repository:
```bash
git clone https://github.com/ShardulJunagade/nextjs-portfolio-template
```
2. Install dependencies:
```bash
npm install
```
3. Start the development server:
```bash
npm run dev
```
4. Open [http://localhost:3000](http://localhost:3000) in your browser
### Common Commands
```bash
npm run dev # Start development server with Turbopack
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npx prettier --write . # Format and prettify all files
```
## Project Structure
```text
src/
├── app/ # Next.js App Router pages
│ ├── blog/ # Blog pages with search, filtering, and reading time
│ │ ├── [slug]/ # Individual blog post pages (markdown & notebooks)
│ │ └── blog-client.tsx # Client-side blog functionality
│ ├── projects/ # Projects showcase with filtering
│ │ ├── [slug]/ # Individual project detail pages
│ │ └── projects-client.tsx # Client-side project functionality
│ ├── publications/ # Academic/professional publications
│ │ └── publications-client.tsx # Client-side publications functionality
│ ├── experience/ # Professional experience timeline (dynamic content)
│ ├── updates/ # Latest news and achievements (dynamic content)
│ ├── contact/ # Contact form and information
│ └── page.tsx # Home page with hero, timeline, and recent updates
├── components/ # Reusable UI components
│ ├── ui/ # Base UI components (button, card, input, etc.)
│ ├── navigation.tsx # Main navigation with search integration
│ ├── search-bar.tsx # Search bar component
│ ├── search-palette.tsx # Advanced command palette search
│ ├── search-provider.tsx # Search context and global shortcuts
│ ├── timeline.tsx # Interactive timeline component
│ ├── timeline-section.tsx # Reusable timeline section component
│ ├── recent-updates-section.tsx # Updates display component
│ ├── notebook-renderer.tsx # Advanced Jupyter Notebook renderer
│ ├── dashboard-layout.tsx # Layout for internal pages
│ ├── theme-provider.tsx # Dark/light mode theme management
│ ├── theme-toggle.tsx # Theme toggle button
│ └── footer.tsx # Site footer component
├── content/ # Markdown and notebook content
│ ├── blog/ # Blog posts (markdown files)
│ ├── projects/ # Project descriptions (markdown files)
│ ├── publications/ # Publications data (markdown files)
│ ├── experience/ # Professional experience (markdown metadata)
│ ├── updates/ # News and updates (markdown metadata)
│ └── notebooks/ # Jupyter notebooks with metadata
├── lib/ # Utility functions and data management
│ ├── content.ts # Content management utilities (blog, projects, etc.)
│ ├── search-content.ts # Search index building
│ ├── search.ts # Search engine with Fuse.js
│ └── utils.ts # General utilities and helpers
├── hooks/ # Custom React hooks
│ └── use-debounce.ts # Debounced search functionality
└── types/ # TypeScript type definitions
└── index.ts # All interface definitions
```
## Customization
### Blog Posts
Add markdown files to `src/content/blog/` with frontmatter:
```markdown
---
title: 'Your Post Title'
description: 'Post description'
date: '2024-01-01'
tags: ['tag1', 'tag2']
---
Your content here...
```
### Jupyter Notebooks
1. Add notebook folder to `src/content/notebooks/`
2. Include `meta.yaml` with metadata:
```yaml
title: 'Notebook Title'
description: 'Notebook description'
date: '2024-01-01'
tags: ['jupyter', 'python', 'data-science']
```
3. Place your `.ipynb` file in the same folder
### Projects
Add markdown files to `src/content/projects/` with frontmatter:
```markdown
---
title: 'Project Name'
description: 'Project description'
tags: ['react', 'typescript']
github: 'https://github.com/user/repo'
demo: 'https://demo.com'
featured: true
---
Project details...
```
### Publications
Add markdown files to `src/content/publications/` with metadata:
```markdown
---
title: 'Publication Title'
authors: ['Author One', 'Author Two']
journal: 'Journal Name'
year: 2024
type: 'article'
tags: ['research', 'ai']
link: 'https://paper.com'
---
```
### Experience & Updates
Add markdown files with frontmatter metadata only:
- `src/content/experience/` - Professional timeline entries
- `src/content/updates/` - Latest news and achievements
## License
This project is open source and available under the [MIT License](LICENSE).
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Explore similar templates
Compare previews and descriptions within the same stack and category.

react-resume-template
A personal resume website template for software developers, built with Next.js, React, and TypeScript and styled with Tailwind CSS. Site content is driven by a single data file at /src/data/data.tsx, with types in dataDef.ts and images in src/images/.
Next.js · Portfolio

nxt-lnk
nxt-lnk is a Next.js-based bio link page template that manages personal information and links via BioData.js and LinksData.js, positioned as a self-hosted alternative to Linktree. It groups links by type, supports enabling/disabling individual links, and offers hexagonal or oval avatars.
Next.js · Portfolio

sylph
Sylph is a minimal portfolio and blog template built on Next.js, supporting MDX/Markdown writing, light/dark themes, and automatic OG image generation. It includes sitemap, robots.txt, metadata, and syntax highlighting, with automatic blog timestamps.
Next.js · Portfolio

sleek-portfolio
A modern, responsive portfolio template built with Next.js 15, TypeScript, Tailwind CSS, and Shadcn UI. It includes an MDX blog, project showcase, work experience timeline, and a contact form that receives messages via Telegram Bot.
Next.js · Portfolio

research-website-template
A React + Next.js template for research personal websites, aimed at PhD students and researchers. It centralizes publications, projects, and other content in src/data as arrays of objects, with optional fields automatically generating UI components.
Next.js · Portfolio

shadcn-portfolio
A developer portfolio template built with Next.js 15, shadcn/ui, Tailwind CSS, and Framer Motion, featuring an MDX blog, light and dark modes, responsive design, and SEO meta tags.
Next.js · Portfolio
