A modern, high-performance, and fully configurable personal portfolio website designed for PhD students, researchers, professors, and software engineers. Built with Next.js 13, React, Bootstrap, and LaTeX.
- ⚙️ 100% Config-Driven: Control name, title, bio, SEO, social links, and theme accents from a single
website.config.json. - 🧭 Modular Navigation & Feature Toggles: Easily enable or disable sections (
publications,projects,workExperience,blogs,games,chatbot) with a boolean switch. - 📄 Automated LaTeX Resume & CV Generator: Keep your resume and CV synced with your JSON data. Generates formatted LaTeX files and compiles production-ready PDFs via Python and GitHub Actions.
- 📊 Interactive SVG Research Graph: Clustered research topics and publication graph that dynamically computes layout from your data.
- 📝 Markdown Blog & RSS Feed: Write articles in
public/blogs/*.mdwith syntax highlighting, automatic reading time, and an auto-generated RSS 2.0 feed (public/rss.xml). - 🤖 AI Search & LLM Ready: Automatically generates
public/llms.txt,public/llms-full.txt, and JSON-LD schema for Perplexity, ChatGPT, and search crawlers. - 🎨 Adaptive Light/Dark Mode: Built-in system preference detection, theme toggler, and customizable CSS color variables.
Click "Use this template" above or clone the repository:
git clone https://github.com/kunpai/my-website.git my-portfolio
cd my-portfolio
npm installRun the built-in CLI to personalize your website configuration:
npm run setupThis wizard will prompt for your name, institution, contact links, feature selections, and theme colors, automatically updating website.config.json.
npm run devOpen http://localhost:3000 in your browser.
├── website.config.json # Main configuration (identity, SEO, features, theme)
├── website.config.example.json# Documented configuration template
├── public/
│ ├── about.md # User-editable About page content
│ ├── blogs/ # Markdown blog posts
│ ├── jsons/ # Structured portfolio data
│ │ ├── education.json
│ │ ├── projects.json
│ │ ├── publications.json
│ │ ├── work-experience.json
│ │ ├── skills.json
│ │ └── examples/ # Minimal starter examples for new users
│ └── latex_src/ # Generated LaTeX resume files
├── scripts/
│ ├── setup.js # Interactive setup wizard CLI (npm run setup)
│ ├── generate_resumes.py # Generates & compiles LaTeX CV/Resume from JSON
│ ├── generate_llms_txt.js # Generates llms.txt and llms-full.txt
│ └── generate_rss.js # Generates public/rss.xml
├── pages/ # Next.js routes
└── components/ # Modular React UI components
In website.config.json, toggle any section under features:
"features": {
"about": true,
"projects": true,
"publications": true,
"workExperience": true,
"blogs": true,
"games": false,
"chatbot": false,
"researchGraph": true
}Disabling a feature automatically updates the topbar navigation and hides the corresponding homepage section.
Personalize brand colors without writing CSS:
"theme": {
"accentColor": "#0d6efd",
"gradientStart": "#0d6efd",
"gradientEnd": "#00d2ff"
}Add entries to public/jsons/publications.json:
{
"title": "Your Paper Title",
"authors": ["Your Name", "Co-author Name"],
"conference": "Conference or Journal Name (ISCA '26)",
"date": "June 2026",
"type": "Conference",
"tags": ["Machine Learning", "Computer Architecture"],
"links": [
{ "label": "Paper", "url": "https://arxiv.org/..." },
{ "label": "Code", "url": "https://github.com/..." }
],
"bibtex": "@inproceedings{...}"
}To generate and compile your CV and Resume PDFs locally:
python3 scripts/generate_resumes.py(Requires a local LaTeX installation such as pdflatex or MacTeX. In GitHub, this compiles automatically via GitHub Actions on every push.)
Create a markdown file in public/blogs/my-first-post.md:
---
title: "My First Blog Post"
date: "2026-09-15"
description: "A summary of my latest research findings."
tags: ["Systems", "Research"]
authors: ["Your Name"]
image: "/images/blog-cover.jpg"
---
Your content here in standard Markdown...- Push your repository to GitHub.
- Import the project into Vercel.
- The default Next.js build settings will build and deploy your site automatically.
This repository includes .github/workflows/auto-resume-and-llm.yml which automatically compiles your LaTeX resumes and generates llms.txt and rss.xml upon each push to main.
Open source and available under the MIT License. Contributions, forks, and suggestions are welcome!