A modern, full-stack portfolio website with an AI-powered chatbot, working contact form, and interactive UI. Built with React, Vite, and Node.js โ featuring smooth animations, dark/light theme, and a terminal-style hero section.
![]() Home Page |
![]() About |
![]() Projects Section |
![]() Contact section |
![]() AI chatbot |
![]() Light theme |
๐ Live Demo
- Embedded AI assistant powered by Groq's LLaMA 3.3 70B model
- Answers visitor questions about skills, projects, education, and experience
- Full conversation history maintained per session
- Animated typing indicator and smooth auto-scroll
- Interactive project cards with hover animations
- Image carousel modal with keyboard navigation (
Escto close) - Features, tech stack, live demo & GitHub links per project
- "Load more" pagination
- Animated terminal card with realistic typewriter effect
- Displays profile JSON and skill tags dynamically
- Multi-stage rendering with per-character timing
- Full-stack contact form with MongoDB storage
- Client-side and server-side validation
- Success/error toast notifications
- Phone, email, and location info cards
- Dark and light theme toggle with system-level CSS variables
- Fully responsive โ mobile, tablet, desktop
- Collapsible navbar with active-section highlighting
- Scroll-to-top button
- Noise grain overlay for texture
- Smooth section animations (fade-up, slide-in)
| Technology | Purpose | Version |
|---|---|---|
| React | UI Framework | 18+ |
| Vite | Build Tool | 5+ |
| Groq API (LLaMA 3.3) | AI Chatbot Inference | Latest |
| React Icons | Icon Library | 5+ |
| Lucide React | Additional Icons | 0.383.0 |
| React Type Animation | Typing Effect (Hero) | 3+ |
| CSS Variables | Design Token System | โ |
| Technology | Purpose | Version |
|---|---|---|
| Node.js | Runtime Environment | 18+ |
| Express.js | Web Framework | 4+ |
| MongoDB | Database (Contact Form) | Latest |
| Mongoose | ODM | 8+ |
| dotenv | Environment Variables | 16+ |
| cors | Cross-Origin Resource Sharing | 2+ |
| Tool | Purpose |
|---|---|
| Vercel | Frontend Deployment |
| Railway | Backend Deployment |
| Nodemon | Dev Server Auto-reload |
| Git | Version Control |
- Node.js
>= 18.0.0 - npm
>= 8.0.0 - MongoDB URI (Atlas or local)
- Groq API key (get one free at console.groq.com)
-
Clone the repository
git clone https://github.com/ravibhushan10/Portfolio-Full-Stack.git cd Portfolio-Full-Stack -
Install Client Dependencies
cd client npm install -
Install Server Dependencies
cd ../server npm install -
Client Environment Variables โ create
.envinclient/VITE_API_URL=http://localhost:5000/api VITE_APP_GROQ_API_KEY=your_groq_api_key_here
-
Server Environment Variables โ create
.envinserver/PORT=5000 NODE_ENV=development CLIENT_URL=http://localhost:5173 MONGO_URI=your_mongodb_connection_string
-
Start the Server
cd server npm run dev # Server runs on http://localhost:5000
-
Start the Client (in a new terminal)
cd client npm run dev # Client runs on http://localhost:5173
- Home โ Animated terminal with profile JSON and tech stack tags
- About โ Bio, stats (projects, CGPA, technologies), and AI chatbot
- Projects โ Card grid with modal detail view and image carousel
- Skills โ Categorised skill list (Languages, Frontend, Backend, Infrastructure)
- Contact โ Contact info + message form backed by MongoDB
- Navigate to the About section
- Type any question about Ravi's skills, projects, or background
- The AI responds using portfolio context โ no general web knowledge
- Example questions:
- "What projects has Ravi built?"
- "What is his tech stack?"
- "Is he open to work?"
- Navigate to the Contact section
- Fill in Full Name, Email, Subject, and Message (required)
- Phone is optional
- Click Send Message โ stored in MongoDB and displays a toast confirmation
Portfolio-Full-Stack/
โโโ client/
โ โโโ data/
โ โ โโโ Realdata/
โ โ โ โโโ aiData.js # AI system prompt & portfolio data
โ โ โ โโโ projectData.js # Projects config & image imports
โ โ โโโ screenshots/ # Project screenshot assets
โ โโโ public/
โ โ โโโ tab_icon.svg
โ โโโ src/
โ โโโ components/
โ โ โโโ Navbar/Navbar.jsx
โ โ โโโ Hero/Hero.jsx
โ โ โโโ About/About.jsx # AI chatbot lives here
โ โ โโโ Projects/Projects.jsx
โ โ โโโ Skills/Skills.jsx
โ โ โโโ Contact/Contact.jsx
โ โโโ App.jsx
โ โโโ main.jsx
โ โโโ index.css # Full design token system
โ
โโโ server/
โโโ config/db.js # MongoDB connection
โโโ controllers/
โ โโโ contactController.js
โโโ models/
โ โโโ contact.js # Mongoose schema
โโโ routes/
โ โโโ contact.js
โโโ server.js # Express app entry point
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/health |
Server health check |
| POST | /api/contact |
Submit a contact message |
| GET | /api/contacts |
List all messages (admin) |
-
Fork the Repository
- Click the Fork button at the top right of this repository
-
Clone Your Fork
git clone https://github.com/your-username/Portfolio-Full-Stack.git cd Portfolio-Full-Stack -
Create a Branch
git checkout -b feature/AmazingFeature
-
Make Your Changes
- Write clean, readable code
- Follow the existing code style
- Test your changes thoroughly
-
Commit Your Changes
git add . git commit -m 'Add some AmazingFeature'
-
Push to Your Fork
git push origin feature/AmazingFeature
-
Open a Pull Request
- Go to your forked repository on GitHub
- Click "Compare & pull request"
- Fill in the PR form:
- Title: Brief summary (e.g., "Add dark mode animation")
- Description: What changed, why, screenshots if UI change
- Related issues: e.g., "Fixes #12"
- Click "Create pull request"
- Admin dashboard to view contact form submissions
- Enhanced AI chatbot with contextual memory across sessions
- Dark mode transitions with animated theme toggle
- Performance optimisation and Lighthouse score improvements
- SEO meta tags and Open Graph support
- Multi-language (i18n) support
- Blog / articles section
Ravi Bhushan
- ๐ผ LinkedIn: https://www.linkedin.com/in/ravibhushan-kumar-55b312344
- ๐ Portfolio: https://ravibhushan-portfolio.vercel.app
- ๐ GitHub: @ravibhushan10
- ๐ง Email: ravibhushankumar87tp@gmail.com
Made with โค๏ธ by Ravi Bhushan





