Skip to content

kpatell/kpatell.github.io

Repository files navigation

Krishan Patel - Personal Portfolio

A modern, minimalistic personal portfolio website built with React, TypeScript, and Tailwind CSS. Features a clean design with dark mode support, animated components, and an AI-powered assistant.

πŸš€ Features

  • Modern Tech Stack: Built with React 18, TypeScript, and Vite for optimal performance
  • Responsive Design: Fully responsive layout that works on all devices
  • Dark Mode: Smooth theme switching with circular reveal animation
  • Type Safety: Full TypeScript implementation for better code quality
  • Component-Based Architecture: Well-organized, reusable components
  • AI Assistant: Gemini API integration for personalized company fit analysis
  • Animated Effects:
    • Decrypt text animation for hero section
    • Particle background effects
    • Smooth scroll-spy navigation
    • Intersection observer animations
  • Accessibility: ARIA labels, semantic HTML, and keyboard navigation support

πŸ“ Project Structure

kpatell.github.io/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ui/              # Reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ Button.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Input.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Textarea.tsx
β”‚   β”‚   β”‚   └── LoadingSpinner.tsx
β”‚   β”‚   β”œβ”€β”€ layout/          # Layout components
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.tsx
β”‚   β”‚   β”‚   └── ThemeToggle.tsx
β”‚   β”‚   β”œβ”€β”€ features/        # Feature components
β”‚   β”‚   β”‚   β”œβ”€β”€ DecryptText.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ParticlesBackground.tsx
β”‚   β”‚   β”‚   └── TimelineItem.tsx
β”‚   β”‚   └── sections/        # Page sections
β”‚   β”‚       β”œβ”€β”€ HeroSection.tsx
β”‚   β”‚       β”œβ”€β”€ AboutSection.tsx
β”‚   β”‚       β”œβ”€β”€ AiAssistantSection.tsx
β”‚   β”‚       └── ContactSection.tsx
β”‚   β”œβ”€β”€ hooks/               # Custom React hooks
β”‚   β”‚   └── useTheme.tsx
β”‚   β”œβ”€β”€ lib/                 # Utilities and helpers
β”‚   β”‚   β”œβ”€β”€ utils.ts
β”‚   β”‚   └── api.ts
β”‚   β”œβ”€β”€ types/               # TypeScript type definitions
β”‚   β”‚   └── index.ts
β”‚   β”œβ”€β”€ styles/              # Global styles
β”‚   β”‚   └── index.css
β”‚   β”œβ”€β”€ App.tsx              # Main app component
β”‚   └── main.tsx             # Entry point
β”œβ”€β”€ public/                  # Static assets
β”‚   └── KrishanPatel-Resume.pdf
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── deploy.yml       # GitHub Actions deployment
β”œβ”€β”€ index.html
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ vite.config.ts
β”œβ”€β”€ tailwind.config.js
└── README.md

πŸ› οΈ Technologies Used

Core

  • React 18 - UI library
  • TypeScript - Type safety and better developer experience
  • Vite - Fast build tool and dev server

Styling

  • Tailwind CSS - Utility-first CSS framework
  • PostCSS - CSS processing
  • Autoprefixer - CSS vendor prefixing

UI Components

  • Lucide React - Beautiful icon library
  • Custom shadcn-style components - Accessible, customizable UI components

Deployment

  • GitHub Pages - Static site hosting
  • GitHub Actions - CI/CD pipeline

🚦 Getting Started

Prerequisites

  • Node.js 18+ and npm

Installation

  1. Clone the repository:
git clone https://github.com/kpatell/kpatell.github.io.git
cd kpatell.github.io
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev

The site will be available at http://localhost:5173

πŸ“œ Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview production build locally
  • npm run lint - Run ESLint
  • npm run deploy - Build and deploy to GitHub Pages (manual)

🌐 Deployment

Automatic Deployment (Recommended)

The site automatically deploys to GitHub Pages when you push to the main branch using GitHub Actions.

Setup Steps:

  1. Go to your repository settings on GitHub
  2. Navigate to Pages under Code and automation
  3. Under Build and deployment, set:
    • Source: GitHub Actions
  4. Push to the main branch to trigger deployment

Manual Deployment

npm run deploy

This will build the project and push the dist folder to the gh-pages branch.

🎨 Customization

Updating Personal Information

  1. Resume: Replace /public/KrishanPatel-Resume.pdf with your resume
  2. Resume Text: Update RESUME_TEXT in /src/lib/utils.ts
  3. Contact Info: Update email and social links in /src/components/sections/ContactSection.tsx
  4. Timeline: Modify timelineData in /src/components/sections/AboutSection.tsx

Styling

  • Global styles: /src/styles/index.css
  • Tailwind config: tailwind.config.js
  • Theme colors and fonts can be customized in the Tailwind config

AI Assistant

To enable the AI assistant feature:

  1. Get a Gemini API key from Google AI Studio
  2. Update the apiKey in /src/lib/api.ts (or use environment variables)

Note: For production, use environment variables to keep your API key secure.

πŸ”’ Environment Variables

Create a .env file in the root directory:

VITE_GEMINI_API_KEY=your_api_key_here

Then update /src/lib/api.ts to use:

const apiKey = import.meta.env.VITE_GEMINI_API_KEY;

πŸ“± Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

🀝 Contributing

This is a personal portfolio project, but suggestions and feedback are welcome! Feel free to open an issue or submit a pull request.

πŸ“„ License

MIT License - feel free to use this project as a template for your own portfolio!

πŸ‘€ Author

Krishan Patel

πŸ™ Acknowledgments


Built with ❀️ by Krishan Patel

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published