Single-page portfolio structure with introduction, works, essays, contact, and footer sections
minimalist-portfolio — Next.js Portfolio Template
By xiaopeng-ye
A single-page personal portfolio template built with Next.js and Tailwind CSS, including dark/light theme switching, scroll navigation, and a particle background. Content is centralized in a configuration file, making it suitable for static hosting.
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 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Dark/light theme switching with View Transitions animations, and navigation state and progress updated on scroll
Particle background and subtle animations, with haptic feedback on supported devices
Personal data, skills, experience, social links, and SEO information centralized in lib/portfolio-config.ts
Content statically embedded at build time, suitable for static hosting such as GitHub Pages
Analytics via posthog-js, disabled by default and enabled only after visitor consent
Template Details
This is a single-page personal portfolio template that uses Next.js App Router to organize pages, Tailwind CSS for styling, and TypeScript. The page consists of sections for introduction, works, essays, contact, and footer. Navigation updates the current section state based on scroll position and displays scroll progress. Theme switching includes animated transitions, and the page also features a particle background and several subtle animations, with haptic feedback on supported devices.
Personal content is centralized in lib/portfolio-config.ts, including name, role, bio, location, availability status, skills and icon mappings, experience timeline, contact email, social links, and SEO title, description, and site URL. Page composition is in app/page.tsx, theme variables and global styles are in app/globals.css, and section layouts are under components/sections. Portfolio content is statically embedded at build time and does not rely on a runtime data source.
For deployment, the project is prepared for static hosting and can be published to GitHub Pages, using GitHub Actions as the Pages source. The project integrates posthog-js on the client via instrumentation-client.ts. Analytics is disabled by default and only starts after a visitor accepts the consent banner. It requires configuring NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN and NEXT_PUBLIC_POSTHOG_HOST in the repository. Since it is a static site, these values are bundled into the client output, so a project token intended for client-side analytics should be used.
The license is MIT, allowing free use, modification, commercial use, and distribution of this version of the code, provided the copyright and license notice are retained when distributing. Licenses for third-party assets such as demo images, fonts, and icons must be verified separately. External services such as domains and hosting may incur costs.
Is it right for your project?
Use Cases
- Developers building a personal homepage to showcase bio, skills, experience, and work links
- A single-page portfolio site requiring dark/light themes and scroll interaction effects
- A personal site intended for static deployment to GitHub Pages
- A portfolio where personal data and SEO information need to be maintained in one place
Suitable For
- Developers who want to quickly start a personal portfolio with Next.js and Tailwind CSS
- Personal sites that prefer a single-page structure with content driven by a configuration file
- Users planning to use static hosting such as GitHub Pages
- Portfolio pages that need dark/light theme switching and scroll navigation feedback
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, install dependencies with pnpm install, start the local development server with pnpm dev, and visit http://localhost:3000
- 2
Replace personal content such as personal, skills, experience, contact, social, and siteMetadata in lib/portfolio-config.ts
- 3
To enable PostHog analytics, copy .env.example to .env.local and fill in NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN and NEXT_PUBLIC_POSTHOG_HOST; configure the same-named secrets in the repository when deploying
- 4
When deploying to GitHub Pages, set the Pages source to GitHub Actions, push to the default branch, and check the workflow on the Actions tab
- 5
When using a custom domain, update DNS records and enter the domain in GitHub Pages settings
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license from the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version of the 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 additional charges.
- Using the PostHog analytics feature requires providing your own PostHog project token and host address and configuring them as secrets in the deployment repository; without configuration, analytics is unavailable.
- Enabling analytics in local development requires copying .env.example to .env.local and filling in your own PostHog configuration values.
- Because static sites bundle NEXT_PUBLIC_* values into the client output, a project token intended for client-side analytics must be used; sensitive server-side tokens must not be used.
- When using a custom domain, you must update DNS records yourself and enter the domain in GitHub Pages settings, which involves external service configuration.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Add these repository secrets before deploying: - `NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN` - `NEXT_PUBLIC_POSTHOG_HOST`
Original README
For local development, copy `.env.example` to `.env.local` and fill in your own values.
Original README
Use a PostHog project token intended for client-side analytics.
Original README
https://github.com/xiaopeng-ye/minimalist-portfolio/blob/main/LICENSEhttps://github.com/xiaopeng-ye/minimalist-portfolio/blob/main/README.mdIf you use a custom domain, update your DNS records and set the domain in GitHub Pages settings.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. 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
- More documented · 83 / 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
- 2026-09-19
- Screenshot last checked
- 2026-10-13
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: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 268791df75bdd2ae5083c2b3517f6ca5aad5cb15a8f7bc0f7f5045ac789b5b8b
2026-10-13T05:18:29.399Z
Source file / repository# Minimalist Portfolio A refined portfolio starter built with Next.js 16, React 19, TypeScript, and Tailwind CSS 4. It is designed for developers who want a fast, personal site with polished motion, strong typography, and a setup that is easy to customize. ## Overview - Clean single-page portfolio structure - Responsive layout for desktop and mobile - Animated light/dark theme toggle - Section-aware navigation and scroll progress feedback - Particle background and subtle motion details - Static-friendly setup for GitHub Pages deployment ## Tech Stack - Next.js 16 (App Router) - React 19 - TypeScript - Tailwind CSS 4 - `@wrksz/themes` for theme management - `motion` for UI animation - `web-haptics` for tactile feedback on supported devices - Lucide React and Simple Icons ## Local Development ```bash git clone https://github.com/xiaopeng-ye/minimalist-portfolio.git cd minimalist-portfolio pnpm install pnpm dev ``` Open `http://localhost:3000` in your browser. ## Scripts ```bash pnpm dev pnpm build pnpm start pnpm lint pnpm lint:fix pnpm format pnpm format:check pnpm typecheck ``` ## Project Structure ```text minimalist-portfolio/ ├── app/ # App Router entry, metadata, global styles ├── components/ │ ├── sections/ # Intro, work, thoughts, connect, footer │ └── ui/ # Reusable UI pieces and visual effects ├── lib/ # Portfolio content and helpers ├── public/ # Static assets └── types/ # Shared TypeScript types ``` ## Customize Your Portfolio Most personal content lives in `lib/portfolio-config.ts`. Update these areas to make the site your own: - `personal`: name, role, bio, location, availability - `skills`: tech stack and icon mappings - `experience`: timeline entries and descriptions - `contact`: email address - `social`: external links - `siteMetadata`: SEO title, description, and site URL You can also adjust layout and presentation here: - `app/page.tsx` for page composition - `app/globals.css` for theme tokens and global styling - `components/sections/*.tsx` for section-specific content and layout ## Features Worth Noting - Theme switching uses `@wrksz/themes` with an animated View Transitions reveal - Scroll tracking updates navigation state as sections enter view - Metadata, manifest, and Open Graph assets are configured in `app/layout.tsx` and `app/opengraph-image.tsx` - The portfolio content is statically embedded at build time from `lib/portfolio-config.ts` ## Deployment This project is set up well for static hosting and can be deployed to GitHub Pages. Typical flow: 1. Enable GitHub Pages with **GitHub Actions** as the source. 2. Push changes to your default branch. 3. Monitor the workflow in the repository's **Actions** tab. ### PostHog on GitHub Pages This project uses `posthog-js` via `instrumentation-client.ts`, which works with the App Router and static export builds. For privacy-friendly behavior on a static site, analytics stay disabled by default and only start after the visitor accepts the consent banner. Add these repository secrets before deploying: - `NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN` - `NEXT_PUBLIC_POSTHOG_HOST` For local development, copy `.env.example` to `.env.local` and fill in your own values. Note: because this is a static site and PostHog runs in the browser, `NEXT_PUBLIC_*` values are embedded into the built client bundle. Use a PostHog project token intended for client-side analytics. If you use a custom domain, update your DNS records and set the domain in GitHub Pages settings. ## Live Site - Portfolio: `https://xiaopengye.kkcloud.org` ## License Released under the [MIT License](LICENSE).
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
