Skip to content

ravibhushan10/Portfolio-Full-Stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

77 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Ravi Bhushan โ€” Full-Stack Portfolio Website

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.


๐Ÿ“ธ Screenshots


Home Page

About

Projects Section

Contact section

AI chatbot

Light theme

๐ŸŒ Live Demo

๐ŸŒŸ Features

๐Ÿค– AI Chatbot (About Section)

  • 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

๐Ÿ’ผ Projects Showcase

  • Interactive project cards with hover animations
  • Image carousel modal with keyboard navigation (Esc to close)
  • Features, tech stack, live demo & GitHub links per project
  • "Load more" pagination

๐ŸŽจ Hero Terminal

  • Animated terminal card with realistic typewriter effect
  • Displays profile JSON and skill tags dynamically
  • Multi-stage rendering with per-character timing

๐Ÿ“ฌ Contact Form

  • Full-stack contact form with MongoDB storage
  • Client-side and server-side validation
  • Success/error toast notifications
  • Phone, email, and location info cards

๐ŸŒ— UI/UX

  • 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)

๐Ÿ› ๏ธ Technologies Used

Frontend (Client)

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 โ€”

Backend (Server)

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+

DevOps & Tools

Tool Purpose
Vercel Frontend Deployment
Railway Backend Deployment
Nodemon Dev Server Auto-reload
Git Version Control

๐Ÿš€ Getting Started

Prerequisites

Installation Steps

  1. Clone the repository

    git clone https://github.com/ravibhushan10/Portfolio-Full-Stack.git
    cd Portfolio-Full-Stack
  2. Install Client Dependencies

    cd client
    npm install
  3. Install Server Dependencies

    cd ../server
    npm install
  4. Client Environment Variables โ€” create .env in client/

    VITE_API_URL=http://localhost:5000/api
    VITE_APP_GROQ_API_KEY=your_groq_api_key_here
  5. Server Environment Variables โ€” create .env in server/

    PORT=5000
    NODE_ENV=development
    CLIENT_URL=http://localhost:5173
    MONGO_URI=your_mongodb_connection_string
  6. Start the Server

    cd server
    npm run dev
    # Server runs on http://localhost:5000
  7. Start the Client (in a new terminal)

    cd client
    npm run dev
    # Client runs on http://localhost:5173

๐Ÿ“– Usage Guide

Navigating the Portfolio

  • 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

Using the AI Chatbot

  1. Navigate to the About section
  2. Type any question about Ravi's skills, projects, or background
  3. The AI responds using portfolio context โ€” no general web knowledge
  4. Example questions:
    • "What projects has Ravi built?"
    • "What is his tech stack?"
    • "Is he open to work?"

Sending a Contact Message

  1. Navigate to the Contact section
  2. Fill in Full Name, Email, Subject, and Message (required)
  3. Phone is optional
  4. Click Send Message โ€” stored in MongoDB and displays a toast confirmation

๐Ÿ“ Project Structure

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

๐Ÿ”Œ API Endpoints

Method Endpoint Description
GET /api/health Server health check
POST /api/contact Submit a contact message
GET /api/contacts List all messages (admin)

๐Ÿค Contributing

How to Contribute

  1. Fork the Repository

    • Click the Fork button at the top right of this repository
  2. Clone Your Fork

    git clone https://github.com/your-username/Portfolio-Full-Stack.git
    cd Portfolio-Full-Stack
  3. Create a Branch

    git checkout -b feature/AmazingFeature
  4. Make Your Changes

    • Write clean, readable code
    • Follow the existing code style
    • Test your changes thoroughly
  5. Commit Your Changes

    git add .
    git commit -m 'Add some AmazingFeature'
  6. Push to Your Fork

    git push origin feature/AmazingFeature
  7. 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"

๐Ÿ”ฎ Planned Improvements

  • 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

๐Ÿ‘จโ€๐Ÿ’ป Author

Ravi Bhushan


โญ Star this repository if it helped you!

Made with โค๏ธ by Ravi Bhushan

Live Demo ยท Report Bug ยท Request Feature