Light and dark themes: automatically detects system preference, persists via localStorage, README claims no flicker
portfolio-template-1 — Next.js Portfolio Template
By isaacnewton123
A personal portfolio template based on the Next.js App Router, including light and dark themes, responsive layout, typing effect, 3D/2D galleries, scroll progress, and a Python script for generating a resume PDF.
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.
Mobile-first responsive layout, adapting to phones, tablets, and desktops
Typing effect for the role text in the Hero section
3D gallery embeds interactive Sketchfab models, 2D gallery with lightbox popup
Scroll reading progress bar and back-to-top button
generate-resume.py combines Python and WeasyPrint to generate a PDF resume, automatically executed during Vercel/Netlify builds
Template Details
This template is a personal portfolio site built with Next.js 16 App Router, React, TypeScript, and Tailwind CSS v4, with the Inter font loaded via next/font. The interface features listed in the README include: light and dark themes (automatically detecting system preference and writing to localStorage), a mobile-first responsive layout, a typing effect for the role text in the Hero section, a 3D gallery (embedding interactive Sketchfab models), a 2D artwork gallery with a lightbox, a scroll reading progress bar and back-to-top button, and SEO-related Open Graph and Twitter Card meta tags. The project structure is divided into src/app, components, context, and hooks, with components covering Navbar, Hero, About, Projects, Artwork, Contact, Footer, and ScrollProgress.
The resume generation part relies on Python and WeasyPrint, producing a PDF via generate-resume.py; the README states that deployment configurations for Vercel and Netlify are included in the repository, that Python dependencies are automatically installed and the PDF is generated during build, and also provides local pip installation and script execution methods. The README does not provide information on content management, data sources, browser compatibility range, level of accessibility support, testing and CI configuration, nor does it describe deployment steps for platforms other than Vercel and Netlify.
Is it right for your project?
Use Cases
- Building a personal portfolio website to showcase projects and artwork
- A static personal site requiring light/dark theme switching and responsive layout
- Embedding Sketchfab 3D models as gallery content on the page
- Automatically generating a PDF resume via script and updating it with site deployments
Suitable For
- Front-end developers familiar with Next.js App Router and TypeScript
- Users who need a quick start for a personal portfolio and are willing to replace the example content
- Personal projects planned for deployment to Vercel or Netlify
- Developers who want to generate a resume PDF with a Python script
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, run npm install, then start the local development server with npm run dev (default http://localhost:3000)
- 2
Resume generation requires installing the Python package weasyprint, then running python3 generate-resume.py or the npm shortcut bun run generate-resume
- 3
Before deploying to Vercel or Netlify, first update personal information in generate-resume.py, then commit and push the code
- 4
The README states that Vercel and Netlify will automatically install Python dependencies and generate the PDF during build, with no local Python environment configuration required
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 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'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 additional charges.
- The 3D gallery feature relies on embedding interactive Sketchfab 3D models; using this feature requires providing models through the Sketchfab platform, which may involve third-party services and accounts.
- The resume generation feature relies on Python and WeasyPrint; the Python package weasyprint must be installed to generate a PDF resume.
- The README states the project is one-click deployable to Vercel and includes configuration; deploying to Vercel requires using that external hosting platform.
- Deployment configurations target Vercel and Netlify, automatically installing Python dependencies and generating the PDF in the cloud during build; using these platforms requires corresponding accounts.
- Generating a PDF resume locally requires first running pip install weasyprint to install Python dependencies.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
- 🧊 **3D Gallery** — Embedded Sketchfab interactive 3D models
Original README
- 📄 **Resume Generator** — Automated PDF resume generation via Python & WeasyPrint (`generate-resume.py`)
Original README
- ☁️ **Vercel-Ready** — One-click deploy with config included
Original README
We have pre-configured the deployment settings for **Vercel** (`vercel.json`) and **Netlify** (`netlify.toml`). This means you don't need to generate the PDFs locally or worry about Python environments—everything happens automatically in the cloud during the build process!
Original README
https://github.com/isaacnewton123/portfolio-template-1/blob/main/LICENSEhttps://github.com/isaacnewton123/portfolio-template-1/blob/main/README.mdpip install weasyprint
Original README
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
- More documented · 88 / 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-05-09
- 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: 1aed171c61fa667aeea5485f85204e289dc7ca2ac81f7bbb801f9ee476a9a05d
2026-10-14T19:08:39.731Z
Source file / repository# 🚀 Next.js Portfolio Template
A modern, responsive personal portfolio built with **Next.js 16**, **React**, and **Tailwind CSS v4**.
🔗 **Live Demo:** [Demo Link](https://hanifmaulana-portfolio.vercel.app/)




---
## ✨ Features
- 🌗 **Dark / Light Theme** — Auto-detects OS preference, persists via localStorage, zero-flash
- 📱 **Fully Responsive** — Mobile-first layouts for phones, tablets, and desktops
- ⚡ **Ultra-Fast Performance** — Stripped of heavy CSS filters and layout shifts for maximum speed
- 🤖 **Vibe Coding** — Architected entirely through AI orchestration
- ⌨️ **Typing Effect** — Rotating role text in hero
- 🧊 **3D Gallery** — Embedded Sketchfab interactive 3D models
- 🖼️ **2D Gallery** — Artwork gallery with lightbox modal
- 📊 **Scroll Progress** — Reading progress bar + back-to-top
- 📄 **Resume Generator** — Automated PDF resume generation via Python & WeasyPrint (`generate-resume.py`)
- 🔍 **SEO Optimized** — Open Graph, Twitter Card meta tags & RealFaviconGenerator integration
- ☁️ **Vercel-Ready** — One-click deploy with config included
## 🛠 Tech Stack
| Layer | Technology |
|-------|-----------|
| Framework | [Next.js 16](https://nextjs.org/) (App Router) |
| Language | [TypeScript](https://www.typescriptlang.org/) |
| Styling | [Tailwind CSS v4](https://tailwindcss.com/) |
| Font | [Inter](https://fonts.google.com/specimen/Inter) via `next/font` |
| Deploy | [Vercel](https://vercel.com/) |
## 📁 Structure
```
.
├── generate-resume.py # Python script for generating PDF resumes
├── src/
│ ├── app/
│ ├── globals.css # Theme, utilities
│ ├── layout.tsx # Root layout + SEO
│ └── page.tsx # Page assembly
├── components/
│ ├── Navbar.tsx # Nav + mobile drawer
│ ├── Hero.tsx # Hero + typing effect
│ ├── About.tsx # Bio, skills, CV
│ ├── Projects.tsx # Featured projects (MultiPost, eslint-plugin-ai-guardrails)
│ ├── Artwork.tsx # 3D/2D tabbed gallery
│ ├── Contact.tsx # Social links
│ ├── Footer.tsx
│ └── ScrollProgress.tsx
├── context/
│ └── ThemeContext.tsx # Dark/light theme
└── hooks/
└── useInView.ts # Intersection Observer
```
## 🚀 Quick Start
```bash
# Clone
git clone https://github.com/isaacnewton123/portfolio-template-1.git
cd portfolio
# Install
npm install
# Dev
npm run dev
# → http://localhost:3000
```
## 📦 Resume Generation & Deployment
This project uses Python and WeasyPrint to automatically generate beautiful PDF versions of your resume based on `generate-resume.py`.
We have pre-configured the deployment settings for **Vercel** (`vercel.json`) and **Netlify** (`netlify.toml`). This means you don't need to generate the PDFs locally or worry about Python environments—everything happens automatically in the cloud during the build process!
### Deploying to Vercel or Netlify
1. Update your details in `generate-resume.py`.
2. Commit and push your code to GitHub:
```bash
git add .
git commit -m "Update my resume details"
git push origin main
```
3. **That's it!** If your repository is connected to Vercel or Netlify, the platform will automatically:
- Install the required Python packages (`weasyprint`)
- Generate your newest PDFs (`Resume_John_Doe_EN.pdf`, etc.)
- Build and deploy your Next.js application
### Local Generation (Optional)
If you just want to generate the PDFs locally to test or see them on your machine, you can run:
```bash
# Install the required Python package
pip install weasyprint
# Run the generator script
python3 generate-resume.py
# Or use the npm shortcut: bun run generate-resume
```
## 🤝 Contributing
Contributions are welcome! Feel free to:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing`)
5. Open a Pull Request
## 💖 Support
If you found this project helpful, consider supporting:
- **Ko-fi**: [ko-fi.com/isaacnewton1](https://ko-fi.com/isaacnewton1)
- **Trakteer**: [trakteer.id/isaacnewton1/link](https://trakteer.id/isaacnewton1/link)
## 📝 License
This project is open source under the [MIT License](LICENSE).
---
Made with ❤️ by [Hanif Maulana](https://github.com/isaacnewton123)
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
