A modern, responsive personal academic website built with Next.js, TypeScript, and Tailwind CSS. Inspired by academic portfolio designs, optimized for showcasing research, publications, and professional information.
- π¨ Clean, professional design
- π± Fully responsive (mobile, tablet, desktop)
- β‘ Fast performance with Next.js static export
- π― Easy content management through data files
- π Ready for Vercel deployment
- βΏ Accessible navigation and content structure
- π Separate pages for: About, Lab, Hiring, Teaching, Talks, Publications
npm installEdit the data files in the data/ directory:
data/personal.ts- Your name, title, bio, contact informationdata/news.ts- News items and announcementsdata/publications.ts- Your publications organized by year
Place images in the public/ folder:
public/headshot.jpg- Your professional photopublic/papers/- Paper thumbnails and visualizations (paper1.png, paper2.png, etc.)
npm run devOpen http://localhost:3000 to see your site.
Edit the following pages as needed:
app/lab/page.tsx- Lab information and membersapp/hiring/page.tsx- Hiring informationapp/teaching/page.tsx- Courses and teaching philosophyapp/talks/page.tsx- Talks, podcasts, and tutorialsapp/publications/page.tsx- Full publications list
- Push your code to a GitHub repository
- Go to vercel.com
- Click "New Project"
- Import your repository
- Vercel will automatically detect Next.js and deploy
# Install Vercel CLI
npm install -g vercel
# Deploy
vercelFollow the prompts, and your site will be live!
βββ app/ # Next.js app directory
β βββ layout.tsx # Main layout
β βββ page.tsx # Homepage
β βββ globals.css # Global styles
β βββ lab/ # Lab page
β βββ hiring/ # Hiring page
β βββ teaching/ # Teaching page
β βββ talks/ # Talks page
β βββ publications/ # Publications page
βββ components/ # React components
β βββ Navigation.tsx # Navigation bar
β βββ Footer.tsx # Footer
β βββ Hero.tsx # Hero section with bio
β βββ News.tsx # News section
β βββ Publications.tsx # Publications section
βββ data/ # Content data files
β βββ personal.ts # Personal information
β βββ news.ts # News items
β βββ publications.ts # Publications
βββ public/ # Static assets
β βββ headshot.jpg # Your photo
β βββ papers/ # Paper images
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript config
βββ tailwind.config.ts # Tailwind config
βββ next.config.js # Next.js config
Edit tailwind.config.ts to change the color scheme:
theme: {
extend: {
colors: {
primary: "#2563eb", // Change primary color
secondary: "#64748b", // Change secondary color
},
},
}- Create a new folder in
app/(e.g.,app/blog/) - Add a
page.tsxfile in that folder - Add the route to
components/Navigation.tsx
Edit components/Footer.tsx to customize copyright and footer content.
To add Google Analytics:
- Install package:
npm install @next/third-parties - Add to
app/layout.tsx:
import { GoogleAnalytics } from '@next/third-parties/google'
// Add inside the <body> tag:
<GoogleAnalytics gaId="G-XXXXXXXXXX" />- Add paper thumbnails (PNG/JPG) to
public/papers/ - Include links to PDF, code repositories, and project websites
- Organize by year for easy browsing
- Use HTML in news content for formatting and links
- Most recent items appear first
- Use emojis sparingly for visual interest
- Keep paragraphs concise
- Link to important papers and resources
- Highlight key achievements and affiliations
# Create production build
npm run build
# Test production build locally
npm run startThe static site will be exported to the out/ directory.
- Ensure images are in the
public/folder - Check that file names match exactly (case-sensitive)
- Use relative paths:
/headshot.jpgnot./headshot.jpg
- Make sure
output: 'export'is innext.config.js - Check that all dependencies are in
package.json - Verify no dynamic routes are used without proper configuration
- Clear browser cache
- Run
npm run devto restart development server - Check Tailwind classes are valid
Feel free to use this template for your personal academic website.
For Next.js documentation: nextjs.org/docs For Vercel deployment: vercel.com/docs
Built with β€οΈ using Next.js, TypeScript, and Tailwind CSS