Source code for kevinkingo.com - a minimalist academic website built with Next.js.
Feel free to fork this repo and use it for your own academic website! Just edit one config file to update all content.
- Config-Driven: All content in
public/config.ts - Smart Filtering: Custom publication filters (Featured, All, by Topic)
- Rich Links: Support for PDFs, project pages, code, awards
- Static Export: Fast, works anywhere
npm install
npm run devEdit public/config.ts to update:
export const config = {
name: "Your Name",
email: "[email protected]",
googleScholar: "https://scholar.google.com/...",
photo: "/images/me.jpg",
bio: `Your bio here...`,
// ...
}publications: [
{
id: "paper-id",
title: "Paper Title",
authors: "Author One, Your Name, Author Three",
venue: "SIGGRAPH",
year: "2025",
image: "/images/2025_paper.png",
links: [
{ type: "pdf", url: "https://..." },
{ type: "project", url: "https://..." },
{ type: "code", url: "https://github.com/..." }
],
featured: true,
tags: ["view synthesis"]
}
]filterCategories: [
{ id: "featured", label: "Featured", filter: (pub) => pub.featured === true },
{ id: "all", label: "All", filter: () => true },
{ id: "relighting", label: "Relighting", filter: (pub) => pub.tags?.includes("relighting") }
]news: [
{
date: "Jan 2025",
text: "Paper accepted to CVPR!",
link: "#paper-id" // Optional
}
]├── app/
│ ├── globals.css # Styles
│ ├── layout.tsx # Layout
│ └── page.tsx # Main page
├── public/
│ ├── config.ts # ⭐ Edit this
│ └── images/ # Your images
└── package.json
npm run buildDeploy the out/ folder to:
- Vercel
- Netlify
- GitHub Pages
- Any static host
- Images: Use
YYYY_paper-id.pngnaming - Author Names: Your name will be auto-bolded
- Bio Links: Use HTML
<a href="...">links</a> - Bio Formatting: Single line break = space, double line break = new paragraph
- Next.js 15
- TypeScript 5
- Tailwind CSS 3
MIT