A modern, animated portfolio website built with Next.js 15, featuring beautiful UI animations powered by Framer Motion and a data-driven architecture for easy content updates.
portfolio/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
│ ├── sections/ # Section components
│ └── ui/ # shadcn/ui components
├── data/ # Content data files
│ ├── bio.ts # Personal information
│ ├── experiences.ts # Work experience
│ ├── projects.ts # Project showcase
│ └── contact.ts # Contact information
├── types/ # TypeScript type definitions
└── lib/ # Utility functions
git clone https://github.com/dwk601/portfolio2025.git
cd portfolio
npm install
npm run dev
All content is managed through simple TypeScript files in the /data directory:
data/bio.ts)Update your name, title, description, avatar, and social links.
data/experiences.ts)Add or modify your work experiences with:
data/projects.ts)Showcase your projects with:
data/contact.ts)Update your email, location, and availability status.
Edit app/globals.css to customize the color scheme using OKLCH color space:
--primary: oklch(...);
--secondary: oklch(...);
Modify animation variants in section components to customize entrance effects.
npm run build
The easiest way to deploy is using Vercel:
Or manually:
npm run dev - Start development server with Turbopacknpm run build - Build for productionnpm start - Start production servernpm run lint - Run ESLintAdd allowed image domains in next.config.ts:
images: {
remotePatterns: [
{
protocol: "https",
hostname: "your-domain.com",
},
],
}
This project is open source and available under the MIT License.
Contributions, issues, and feature requests are welcome!
For questions or feedback, please reach out through the contact form on the portfolio website.
Built with ❤️ using Next.js and Framer Motion