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.
π Live Demo: lakshyaworks.dev
- 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
- Real-time display of recently played tracks
- Automated daily updates via GitHub Actions
- Dedicated
/listeningpage with sleek album art and playback history - Direct Spotify links for each track
- 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
- Integrated Cal.com booking system
- One-click 30-minute meeting scheduling
- Professional call-to-action section
- Live GitHub contribution graph
- Activity visualization from @21lakshh
- Displays coding consistency and open-source involvement
- Medium integration for blog posts
- Dynamic routing for individual blog pages
- Clean reading experience with responsive design
- 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
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React, React Icons
- UI Components: Radix UI primitives
- LLM: Google Gemini (via LangChain)
- Vector DB: Qdrant Cloud
- Embeddings: Google Generative AI Embeddings
- Document Loading: LangChain Document Loaders
- Video: Mux Video API
- Calendar: Cal.com
- Music: Spotify Web API
- Code: GitHub API (@octokit/rest)
- Analytics: Vercel Analytics
- CI/CD: GitHub Actions
- Deployment: Vercel
- Scheduling: Cron jobs for daily Spotify updates
- Node.js 18+
- pnpm (recommended) or npm
- Git
git clone https://github.com/21lakshh/portfolio.git
cd portfoliopnpm install
# or
npm installCreate 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_tokenpnpm dev
# or
npm run devOpen http://localhost:3000 in your browser.
-
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
-
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
- Add markdown/text files to
-
Get Google AI API Key:
- Visit Google AI Studio
- Create a new API key for Gemini
- Add to
.envasNEXT_GOOGLE_API_KEY
-
Create a Spotify App:
- Go to Spotify Developer Dashboard
- Create a new app and note your Client ID and Secret
- Add
http://localhost:3000/callbackas a redirect URI
-
Get Refresh Token:
- Use the Spotify OAuth flow to obtain a refresh token
- Add credentials to
.env
-
Enable GitHub Actions:
- Add the same Spotify credentials as repository secrets
- The workflow will run daily at midnight UTC
- 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
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
While this is a personal portfolio, suggestions and feedback are welcome!
- Fork the repository
- Create a feature branch
- Commit your changes
- Open a pull request
Lakshya Paliwal
- Portfolio: lakshyaworks.dev
- GitHub: @21lakshh
- Twitter: @lakshh__
- LinkedIn: lakshya-paliwal
- Next.js - React framework
- Vercel - Hosting platform
- LangChain - LLM orchestration
- Qdrant - Vector database
- Mux - Video infrastructure
- Spotify - Music API
- Cal.com - Scheduling
β If you found this portfolio inspiring, consider giving it a star!