Skip to content

Repository files navigation

✨ Vaibhav Raj - Personal Portfolio with AI

A modern, responsive personal portfolio website showcasing my projects, skills, services, and an integrated AI assistant.

React Vite Tailwind CSS Framer Motion

Live DemoReport BugRequest Feature


🎯 Overview

This portfolio features a sleek dark visual style, glassmorphism-inspired UI elements, smooth motion transitions, route-based project detail pages, and a floating AI chat widget. It is built with React 19 and modern frontend tooling for performance and maintainability.


🖼️ Profile Preview

Landing Section Portfolio Layout
Landing Section Portfolio Layout

⚡ Key Highlights

🌙 Dark Theme 🎨 Glassmorphism UI 🖱️ Custom Cursor
📱 Responsive Layout Fast Vite Build 🎬 Motion Animations
🤖 AI Agent Chat 📧 EmailJS Contact Form 🧭 Project Detail Routes

🚀 Features

  • Modern Portfolio UI - Clean dark design with animated sections and polished interactions
  • AI Agent Widget - Floating chatbot with quick command hints and contextual responses
  • Smart Fallback UX - If AI service is unavailable, bot suggests direct contact paths
  • Project Showcase - Work cards with detail pages plus a "View All Projects On GitHub" CTA
  • Contact System - Functional contact form integrated with EmailJS
  • Responsive by Default - Optimized across mobile, tablet, and desktop

🛠️ Tech Stack

Category Technologies
Frontend React 19, React Router DOM 7
Styling Tailwind CSS 4, Custom CSS, PostCSS
Animations Framer Motion 12
Icons Lucide React, React Icons
Build Tool Vite 7
Contact EmailJS Browser SDK
Linting ESLint 9

📁 Project Structure

portfolio/
├── api/
│   └── chat.js
├── public/
├── src/
│   ├── assets/
│   │   └── screenshot/
│   ├── components/
│   │   ├── BotWidget.jsx
│   │   ├── Contact.jsx
│   │   ├── CredentialsPreview.jsx
│   │   ├── Cursor.jsx
│   │   ├── Footer.jsx
│   │   ├── Hero.jsx
│   │   ├── LoadingScreen.jsx
│   │   ├── Navbar.jsx
│   │   ├── Process.jsx
│   │   ├── Profile.jsx
│   │   ├── ProjectDetails.jsx
│   │   ├── Projects.jsx
│   │   ├── ScrollIndicator.jsx
│   │   ├── Services.jsx
│   │   ├── ServiceUnavailable.jsx
│   │   └── Skills.jsx
│   ├── utils/
│   │   └── portfolioContext.js
│   ├── App.css
│   ├── App.jsx
│   ├── index.css
│   ├── main.jsx
│   ├── personalData.js
│   └── projectsData.js
├── eslint.config.js
├── index.html
├── package.json
├── postcss.config.js
├── README.md
└── vite.config.js

⚡ Quick Start

Prerequisites

  • Node.js 18+
  • npm (or compatible package manager)

Installation

  1. Clone the repository
git clone https://github.com/vaibhav5860/portfolio.git
cd portfolio
  1. Install dependencies
npm install
  1. Create environment variables

Create a .env file in the project root.

Provider Variables
EmailJS VITE_EMAILJS_SERVICE_ID, VITE_EMAILJS_TEMPLATE_ID, VITE_EMAILJS_PUBLIC_KEY
OpenRouter OPENROUTER_API_KEY, OPENROUTER_MODEL, OPENROUTER_SITE_URL, OPENROUTER_SITE_NAME
Groq GROQ_API_KEY, GROQ_MODEL
Gemini GEMINI_API_KEY, GEMINI_MODEL
OpenAI OPENAI_API_KEY, OPENAI_MODEL

Example:

VITE_EMAILJS_SERVICE_ID=your_service_id
VITE_EMAILJS_TEMPLATE_ID=your_template_id
VITE_EMAILJS_PUBLIC_KEY=your_public_key

OPENROUTER_API_KEY=your_openrouter_key
OPENROUTER_MODEL=meta-llama/llama-3.1-8b-instruct:free
OPENROUTER_SITE_URL=http://localhost:5173
OPENROUTER_SITE_NAME=Portfolio Chatbot

GROQ_API_KEY=your_groq_key
GROQ_MODEL=llama-3.1-8b-instant

GEMINI_API_KEY=your_gemini_key
GEMINI_MODEL=gemini-3-flash-preview

OPENAI_API_KEY=your_openai_key
OPENAI_MODEL=gpt-4o-mini
  1. Run the development server
npm run dev
  1. Open in browser
http://localhost:5173

📜 Available Scripts

Command Description
npm run dev Start development server with HMR
npm run build Build for production
npm run preview Preview production build locally
npm run lint Run ESLint checks

🎨 Customization

Update Personal Content

  • Edit profile and social links in src/personalData.js
  • Edit project details in src/projectsData.js
  • Update AI quick hints and fallback reply in src/components/BotWidget.jsx
  • Refine chat context logic in src/utils/portfolioContext.js

Work Section CTA

The Work section includes a dedicated button that links to GitHub for viewing all projects.


📱 Main Sections

Section Description
Hero Intro banner with role and primary actions
Skills Categorized technical and soft skills
Projects (Work) Project cards and detail routes with GitHub CTA
Services Service offerings and value proposition
Process Workflow and approach summary
Credentials Education and certificates preview
Contact EmailJS contact form and direct channels
AI Agent Chatbot for portfolio Q&A and guided navigation

🤝 Connect With Me

LinkedIn GitHub Email Twitter/X Instagram


📄 License

No license file is currently included in this repository.


⭐ Star this repo if you found it helpful!

Made with ❤️ by Vaibhav Raj

About

Personal Portfolio with AI : Modern, responsive portfolio website showcasing my skills, projects, and services as a Computer Science student and full-stack web developer.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages