Next.js Creative Portfolio Tutorial: Build Amazing Portfolio Website with Next.js, Three.js, and Tailwind CSS 🔥
This repository contains final code for Next.js Creative Portfolio website built using Next.js and Three.js.
For Demo checkout following link👇:
Nextjs Creative Portfolio Website Demo
✨ Checkout my brand new Saas application -> AI Headshot Generator
Starter Code Files👇:
➡ Link 💚: Nextjs Creative Portfolio Website Starter Code
If you want to learn how to create it please follow below tutorial👇:
➡ Tutorial Link 💚: Personal Portfolio Website with Next.js, Three.js & Tailwind CSS Tutorial
💚 Checkout my personal website DevDreaming
- "Tim Mckee - Boy Wizard" by elbertwithane is licensed under Creative Commons Attribution .
- "Stylized wizard hat" by Enkarra is licensed under Creative Commons Attribution.
- "Wizard Staff" by Toymancer Studio is licensed under Creative Commons Attribution.
- Created with the help of Playground AI
- Fonts from Google Fonts
- Icons from Lucide Icons
- Notifications from Sonner
- Form created using react-hook-form
- Animations using framer-motion
- Emails using Emailjs
- Convert 3d models to JSX using Gltf JSX
- Music by Shiden Beats Music from Pixabay
This is a Next.js project bootstrapped with create-next-app.
This repo now uses Bun as the package manager. Install Bun, then:
bun install # install all dependencies
bun dev # start the dev serverOpen http://localhost:3000 with your browser to see the result.
The project has been refreshed to run on the latest stable versions of every major dependency. Headline changes:
- Next.js
14.2→16.2(Turbopack builds, removal ofnext lint— replaced witheslint .) - React / React DOM
18→19 - Tailwind CSS
3→4(new@tailwindcss/postcssplugin,@import "tailwindcss"+@configdirective inglobals.cssto keep the existing JS config) - @react-three/fiber
8→9and @react-three/drei9→10(React 19 compatible) - framer-motion
11→12, three0.162→0.184, sonner1→2, @emailjs/browser4.2→4.4, react-hook-form, lucide-react, sharp all bumped to latest - ESLint
8→9with flat config (eslint.config.mjs) andeslint-config-next16 - Package manager: switched from npm to Bun —
package-lock.jsonremoved,bun.lockchecked in
- Next.js 15+ disallows
dynamic(..., { ssr: false })inside Server Components, so the three model imports (Wizard,HatModel,Staff) are now wrapped in tiny*Client.jsxfiles marked"use client". globals.cssswitched from@tailwind base/components/utilitiesto@import "tailwindcss"+@config "../../tailwind.config.js"(legacy JS config kept as-is via the v4@configdirective).postcss.config.jsnow uses@tailwindcss/postcssinstead of thetailwindcssPostCSS plugin..eslintrc.jsonreplaced witheslint.config.mjs(flat config) usingeslint-config-next/core-web-vitals.package.jsonlintscript changed fromnext linttoeslint ..
The pre-upgrade version (Next.js 14, React 18, Tailwind 3, npm) is preserved in git history. To check it out locally:
git checkout 3b313c4 # last commit before the upgradeOr browse it on GitHub: commit 3b313c4.







