Skip to content

21lakshh/portfolio

Repository files navigation

Portfolio

A modern, feature-rich portfolio website built with Next.js 15, showcasing my work, experience, and technical expertise. Features an AI-powered RAG chatbot, real-time Spotify integration, interactive project showcases, and more.

Next.js TypeScript Tailwind CSS

πŸ”— Live Demo: lakshyaworks.dev


✨ Features

πŸ€– RAG-Powered AI Chatbot

  • Interactive chat interface to ask questions about my experience, projects, and skills
  • Vector embeddings stored in Qdrant for semantic search
  • Context-aware responses with streaming support

🎡 Spotify Integration

  • Real-time display of recently played tracks
  • Automated daily updates via GitHub Actions
  • Dedicated /listening page with sleek album art and playback history
  • Direct Spotify links for each track

🎬 Dynamic Project Showcase

  • Project videos powered by Mux Video API
  • Masonry grid layout with hover animations
  • Detailed project pages with tech stacks, features, and live demos
  • Auto-generated project skeletons during loading

πŸ“… Meeting Scheduler

  • Integrated Cal.com booking system
  • One-click 30-minute meeting scheduling
  • Professional call-to-action section

πŸ“Š GitHub Contributions

  • Live GitHub contribution graph
  • Activity visualization from @21lakshh
  • Displays coding consistency and open-source involvement

πŸ“ Blog Section

  • Medium integration for blog posts
  • Dynamic routing for individual blog pages
  • Clean reading experience with responsive design

🎨 Design & UX

  • Minimalist black/white theme with smooth transitions
  • Dark mode support with theme persistence
  • Responsive design for all device sizes
  • Smooth scroll animations with Framer Motion
  • Diagonal pattern decorations for visual interest
  • Custom haptic feedback on mobile devices

πŸš€ Tech Stack

Frontend

  • Framework: Next.js 15 (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • Animations: Framer Motion
  • Icons: Lucide React, React Icons
  • UI Components: Radix UI primitives

AI & Data

  • LLM: Google Gemini (via LangChain)
  • Vector DB: Qdrant Cloud
  • Embeddings: Google Generative AI Embeddings
  • Document Loading: LangChain Document Loaders

Integrations

  • Video: Mux Video API
  • Calendar: Cal.com
  • Music: Spotify Web API
  • Code: GitHub API (@octokit/rest)
  • Analytics: Vercel Analytics

Automation

  • CI/CD: GitHub Actions
  • Deployment: Vercel
  • Scheduling: Cron jobs for daily Spotify updates

πŸ“¦ Installation

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm
  • Git

Clone the Repository

git clone https://github.com/21lakshh/portfolio.git
cd portfolio

Install Dependencies

pnpm install
# or
npm install

Environment Variables

Create a .env file in the root directory with the following variables:

# GitHub API
GITHUB_TOKEN=your_github_personal_access_token
NEXT_GITHUB_TOKEN=your_github_personal_access_token

# Google AI (for RAG chatbot)
NEXT_GOOGLE_API_KEY=your_google_gemini_api_key

# Qdrant Vector Database
NEXT_QDRANT_API_KEY=your_qdrant_api_key
NEXT_QDRANT_URL=your_qdrant_cluster_url
NEXT_QDRANT_COLLECTION_NAME=your_collection_name

# Spotify API (optional - for music integration)
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token

Run Development Server

pnpm dev
# or
npm run dev

Open http://localhost:3000 in your browser.


πŸ”§ Configuration

Setting Up the RAG Chatbot

  1. Create a Qdrant Collection:

    • Sign up at Qdrant Cloud
    • Create a new collection with vector size 768 (for Google embeddings)
    • Copy your cluster URL and API key
  2. Prepare Your Documents:

    • Add markdown/text files to src/data/ or your chosen directory
    • Run the embedding script to populate Qdrant:
    node scripts/embed-documents.js
  3. Get Google AI API Key:

    • Visit Google AI Studio
    • Create a new API key for Gemini
    • Add to .env as NEXT_GOOGLE_API_KEY

Setting Up Spotify Integration

  1. Create a Spotify App:

    • Go to Spotify Developer Dashboard
    • Create a new app and note your Client ID and Secret
    • Add http://localhost:3000/callback as a redirect URI
  2. Get Refresh Token:

    • Use the Spotify OAuth flow to obtain a refresh token
    • Add credentials to .env
  3. Enable GitHub Actions:

    • Add the same Spotify credentials as repository secrets
    • The workflow will run daily at midnight UTC

Customizing Content

  • Projects: Edit src/data/projects.ts
  • Blogs: Edit src/data/blogs.ts
  • Experience: Edit src/components/ExperienceContent.tsx
  • Tech Stack: Edit src/components/TechStackMarquee.tsx

πŸ“ Project Structure

portfolio/
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── update-spotify.yml       # Daily Spotify sync
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ images/                      # Static images
β”‚   └── tech-icons/                  # Technology icons
β”œβ”€β”€ scripts/
β”‚   └── fetch-spotify.js             # Spotify API script
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ chat/                # RAG chatbot endpoint
β”‚   β”‚   β”‚   └── github-contributions/
β”‚   β”‚   β”œβ”€β”€ ask-me/                  # Chatbot page
β”‚   β”‚   β”œβ”€β”€ blogs/                   # Blog pages
β”‚   β”‚   β”œβ”€β”€ listening/               # Spotify listening page
β”‚   β”‚   β”œβ”€β”€ projects/                # Project showcase
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   └── page.tsx                 # Home page
β”‚   β”œβ”€β”€ components/                  # React components
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   β”œβ”€β”€ projects.ts              # Project data
β”‚   β”‚   β”œβ”€β”€ blogs.ts                 # Blog data
β”‚   β”‚   └── spotify.json             # Recently played tracks
β”‚   β”œβ”€β”€ hooks/                       # Custom React hooks
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ langchain/               # RAG implementation
β”‚   β”‚   └── utils.ts                 # Utility functions
β”‚   └── types/                       # TypeScript types
β”œβ”€β”€ .env                             # Environment variables
β”œβ”€β”€ package.json
└── README.md

🀝 Contributing

While this is a personal portfolio, suggestions and feedback are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Open a pull request

πŸ‘¨β€πŸ’» Author

Lakshya Paliwal


πŸ™ Acknowledgments


⭐ If you found this portfolio inspiring, consider giving it a star!

About

Portfolio Website

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors