A modern, animated portfolio website built with Next.js, TypeScript, and GSAP. The website features smooth page transitions, interactive animations, and a responsive design.
- 🎨 Modern and minimalistic design
- ✨ Smooth page transitions and animations using GSAP
- 📱 Fully responsive layout
- 🔄 Dynamic project showcase with grid/list view
- 📝 Contact form with email handling via Resend API
- 💌 Automated email notifications with status feedback
- 🎯 Custom cursor animations
- 🎭 Interactive hover effects
- 🔍 SEO friendly
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: GSAP (with SplitText, ScrollTrigger, CustomEase plugins)
- Smooth Scrolling: @studio-freight/react-lenis
- Icons: Lucide React
src/
├── app/
│ ├── about/ # About page components and logic
│ ├── animations/ # GSAP animation logic and configurations
│ ├── api/ # API route handlers (contact form, etc.)
│ ├── components/ # Reusable UI components
│ ├── contact/ # Contact page components and logic
│ ├── data/ # Static data and content configuration
│ ├── fonts/ # Custom font imports
│ ├── libs/ # Third-party libraries
│ └── sections/ # Reusable page sections and layouts
│ └── works/ # Works page components and logic
│ └── [id]/ # Dynamic routes for individual work items
- Navbar: Responsive navigation with mobile menu
- AnimatedLink: Custom animated link component
- TransitionLink: Page transition handler
- SmoothScrolling: Smooth scroll implementation
- Footer: Site-wide footer with social links
- Page transition effects
- Text reveal animations
- Image hover effects
- Smooth scrolling
- Interactive button animations
- Status message animations
- Accordion animations
- Clone the repository:
git clone https://github.com/66HEX/personal-website.git
- Install dependencies:
npm install
# or
yarn install
- Run the development server:
npm run dev
# or
yarn dev
- Open http://localhost:3000 in your browser.
The contact form is powered by Resend for reliable email delivery. The implementation includes:
- Server-side email handling using API routes
- Custom email templates
- Error handling and validation
- Success/error status notifications
- Install Resend:
npm install resend
# or
yarn add resend
- Create an API route handler (
app/api/contact/route.ts
):
import { NextResponse } from 'next/server';
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST(request: Request) {
try {
const body = await request.json();
const { name, email, message } = body;
const { data, error } = await resend.emails.send({
from: 'Your Portfolio <onboarding@resend.dev>',
to: ['your-email@example.com'],
subject: `New Contact Form Message from ${name}`,
text: `
Name: ${name}
Email: ${email}
Message: ${message}
`,
});
if (error) {
return NextResponse.json({ error: error.message }, { status: 400 });
}
return NextResponse.json({ success: true }, { status: 200 });
} catch (error) {
return NextResponse.json(
{ error: 'Failed to send message' },
{ status: 500 }
);
}
}
Create a .env.local
file in the root directory and add the following variables:
RESEND_API_KEY=your_resend_api_key
The site can be deployed on platforms like Vercel or Netlify. For Vercel deployment:
- Push your code to GitHub
- Import your repository to Vercel
- Configure your environment variables
- Deploy
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details.
Your Name - hexthecoder@gmail.com
Project Link: https://github.com/66HEX/personal-website