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: "[email protected]",
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 ConsoleThe 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_KEYGEMINI_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: [email protected]
- GitHub: @agakadela
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ by Aga Kadela
