A modern, interactive portfolio website built with Next.js, React, and TypeScript, featuring AI-powered components and smooth animations. The site includes an intelligent chat assistant powered by Google's Gemini AI model.
- 🤖 AI Chat Assistant - Interactive chat powered by Google Gemini
- 🚀 Interactive Code Typing Animation - Dynamic code display with syntax highlighting
- 💻 Responsive Design - Optimized for all devices from mobile to desktop
- 🎨 Modern UI/UX - Clean, professional interface with smooth animations
- 🌙 Dark Mode - Sleek dark theme for optimal viewing
- 📧 Contact Form - Integrated with Resend for reliable email delivery
- 📱 Mobile-First Approach - Fully responsive with tailored mobile experience
- 🎯 SEO Optimized - Built-in metadata configuration
- ⚡ Performance Optimized - Fast loading and smooth transitions
- 🔄 Loading Animations - Smooth loading transitions with Lottie
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS with CSS Variables
- Animations:
- Framer Motion
- Lottie Animations
- Form Handling: React Hook Form with Zod validation
- UI Components:
- shadcn/ui
- Lucide React Icons
- Email Service: Resend
- AI Integration: Google Gemini AI
- Code Highlighting: Prism React Renderer
- UI Components: Custom components with shadcn/ui
- AI Model: Google Gemini
- Deployment: [Your deployment platform]
- Node.js 18+
- npm or yarn or pnpm
- Git
-
Clone the repository
git clone https://github.com/agakadela/my-website.git cd ai-portfolio
-
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
# Create a .env.local file with the following variables: RESEND_API_KEY=your_resend_api_key GOOGLE_API_KEY=your_gemini_api_key
-
Start the development server
npm run dev # or yarn dev
-
Build for production
npm run build # or yarn build
All the main content of the portfolio is centralized in the data/index.ts
file for easy customization. Here's how to modify each section:
Update the home section with your details:
home: {
name: "Your Name",
description: "Your Tagline", // Use # for styling, _ for space, __ for dash
cvLink: "#contact", // Or link to your CV
}
Modify the sidebar links with your social media profiles:
sidebar: {
links: [
{
name: 'github',
link: 'https://github.com/yourusername',
icon: Github,
},
// Add or remove social links as needed
];
}
Showcase your projects by updating the projects array:
projects: {
projects: [
{
id: 1,
title: 'Project Name',
description:
'Project description.\n\n Technologies Used: Tech1, Tech2, Tech3',
image: '/projects-imgs/your-image.png', // Add image to public/projects-imgs/
previewLink: 'https://project-url.com',
},
// Add more projects
];
}
Customize your skills section:
technologies: {
skills: [
{
id: 1,
name: 'technology-name',
src: '/skills/icon.svg', // Add icon to public/skills/
link: 'https://link-to-technology-info',
},
// Add more skills
];
}
Update your contact details:
contact: {
email: "your.email@domain.com",
name: "Your Name"
}
Change the prompt in the app/api/chat/route.ts
file in the createContextFromData
function to change the behavior of the AI assistant.
- Project images: Add to
public/projects-imgs/
(Recommended size: 1200x630px) - Skill icons: Add to
public/skills/
(SVG format recommended) - All images should be optimized for web use
- Use
#
before words in descriptions for special styling - Use
_
for spaces in specially styled text - Use
__
for dashes in specially styled text - The portfolio uses Tailwind CSS for styling - customize colors in
tailwind.config.ts
After customizing, make sure to set up your environment variables in .env.local
:
RESEND_API_KEY=your_resend_api_key # Get from https://resend.com
GOOGLE_API_KEY=your_gemini_api_key # Get from Google Cloud Console
The AI chat assistant's responses are based on your data file content. Update the information in data/index.ts
to ensure the AI provides accurate information about you and your work.
-
app/
- Next.js app directory and API routes(main)/
- Main application routesapi/
- API endpoints for email and chat
-
components/
- React componentslayout/
- Layout components (header, footer, etc.)sections/
- Page sections (home, about, projects, etc.)ui/
- Reusable UI components from shadcn/ui
-
data/
- Static data and content configuration -
hooks/
- Custom React hooks -
lib/
- Utility functions and shared code -
public/
- Static assetsimgs/
- Image assetsskills/
- Skill iconsprojects-imgs/
- Project screenshotslottie/
- Lottie animation files
This portfolio is optimized for deployment on Vercel. To deploy:
- Fork this repository
- Create a new project on Vercel
- Connect your forked repository
- Add the required environment variables:
RESEND_API_KEY
GEMINI_API_KEY
- Deploy!
The following environment variables are required:
RESEND_API_KEY
- API key for email serviceGOOGLE_API_KEY
- API key for Gemini Pro AI (required for chat assistant)
Aga Kadela
- Website: agakadela.com
- Email: aga.kadela.dev@gmail.com
- GitHub: @agakadela
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Aga Kadela