https://github.com/rushikeshnimkar/portfolio2025
Rushikesh Nimkar's portfolio, accessible at rushikeshnimkar.xyz, is a modern website built with Next.js 15 and TypeScript. It features AI-powered email generation, an interactive chat with an AI version of Rushikesh, dynamic animations, responsive design, dark mode, and showcases his projects and contributions.
https://github.com/rushikeshnimkar/portfolio2025
ai aiagents chatbot gemini github github-pages langchain langgraph openrouter personal-website pinecone portfolio portfolio-site portfolio-template portfolio-website template vectorembeddings
Last synced: 8 months ago
JSON representation
Rushikesh Nimkar's portfolio, accessible at rushikeshnimkar.xyz, is a modern website built with Next.js 15 and TypeScript. It features AI-powered email generation, an interactive chat with an AI version of Rushikesh, dynamic animations, responsive design, dark mode, and showcases his projects and contributions.
- Host: GitHub
- URL: https://github.com/rushikeshnimkar/portfolio2025
- Owner: Rushikeshnimkar
- License: mit
- Created: 2025-01-19T18:34:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-13T12:13:22.000Z (over 1 year ago)
- Last Synced: 2025-03-13T13:24:05.109Z (over 1 year ago)
- Topics: ai, aiagents, chatbot, gemini, github, github-pages, langchain, langgraph, openrouter, personal-website, pinecone, portfolio, portfolio-site, portfolio-template, portfolio-website, template, vectorembeddings
- Language: TypeScript
- Homepage: https://rushikeshnimkar.xyz
- Size: 10.2 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Rushikesh Nimkar's Portfolio
A modern portfolio website built with Next.js 15, featuring AI chat integration and interactive animations.
## ✨ Features
- **AI-Powered Email Generation**: Create professional emails with AI assistance
- **Interactive Chat**: Talk directly with an AI version of me using advanced LLMs
- **Vector Embeddings**: Semantic search capabilities for more accurate AI responses
- **Dynamic Animations**: Engaging UI with smooth animations
- **Responsive Design**: Seamless experience across all devices
- **Dark Mode**: Eye-friendly interface for all lighting conditions
- **Project Showcase**: Interactive displays of my work and contributions
- **AI-Powered Dynamic Theming**: Transform the entire interface with natural language requests, allowing real-time visual customization
---
## 🛠 Tech Stack
| Layer | Technologies |
| ------------------- | --------------------------------------------------- |
| **Frontend** | Next.js 15, TypeScript, Tailwind CSS, Framer Motion |
| **Backend** | Node.js, Next.js API Routes |
| **AI Integration** | OpenRouter API |
| **Embeddings** | Google Gemini |
| **Vector Database** | Pinecone |
| **Search** | Tavily API |
| **Email** | Nodemailer, Abstract API |
| **Deployment** | Vercel + Edge Functions |
---
## Model Status
This badge shows the **real-time operational status** of selected AI models from OpenRouter.
Each badge displays:
- **Model name**: The model's identifier
- **Status**:
- `operational` – model is healthy (uptime ≥ 90%)
- `Degraded` – degraded performance (uptime ≥ 50%)
- `offline` – not available (uptime < 50%)
- **Uptime**: The average uptime over the past 30 minutes
Clicking the badge opens the live SVG endpoint.
> ⚠️ **Note**:
> A `Degraded` does **not** mean the model is completely unusable.
> It simply indicates that **some requests may fail intermittently** due to degraded uptime or performance.
This badge shows the real-time operational status of the Kimi model.
---
## 🚀 Getting Started
> **⚠️ IMPORTANT:** Before starting, make sure to set up all required environment variables in a `.env` file as described in the Environment Variables section below. The application will not work properly without these configurations.
1. Clone and install:
```bash
git clone https://github.com/Rushikeshnimkar/portfolio2025.git
cd portfolio
npm install
```
2. Update your personal information:
```bash
# Edit the components/character/character.ts file with your own details
# This is crucial for the AI to represent you correctly
```
3. Run development server:
```bash
npm run dev
```
> **Note:** The first run will take longer than usual as the system creates and saves your embeddings to the vector database. Take this time to relax and enjoy a coffee! ☕
4. Open [http://localhost:3000](http://localhost:3000)
> **⚠️ IMPORTANT NOTE:** Make sure to uncomment the following line in `api/chat/route.ts` & `api/theme/route.ts` when working in development:
>
> ```javascript
> // "http://localhost:3000",
> ```
## 📧 Email Generation Feature
The portfolio includes an AI-powered email generation system that:
- Creates professional emails based on simple prompts
- Validates sender email addresses
- Supports both AI-generated and manual email composition
- Features elegant text generation animations
## 💬 AI Chat Integration
Chat with an AI version of me that:
- Answers questions about my skills, experience, and projects
- Accesses real-time information when needed via Tavily search
- Maintains conversation context across messages
- Provides accurate information about my background and expertise
- Uses vector embeddings for more accurate and relevant responses
## 🎨 AI Theme Customization
The portfolio includes an AI-powered theme customization system that:
- Transforms the UI with natural language commands
- Understands specific page elements through vector embeddings
- Applies changes in real-time with visual feedback
- Generates custom JavaScript on-the-fly for unique visual effects
- Maintains responsive design across all device sizes
- Supports both page-specific and site-wide modifications
## 🔍 Vector Database Integration
The portfolio uses Pinecone vector database to store and retrieve embeddings:
- Semantic search capabilities for more accurate AI responses
- Google Gemini embeddings for high-quality vector representations
- Efficient retrieval of relevant information based on user queries
- One-time initialization with profile data for persistent storage
## 🔒 Security Features
- CORS protection for API routes
- Email validation to prevent spam
- Rate limiting on sensitive endpoints
## Environment Variables
Create a `.env` file in the root directory and add your environment variables:
```env
# Development environment (all the apis are free)
EMAIL_USER="your emailid"
EMAIL_APP_PASSWORD="your App Password" # get it from your Google Account settings
ABSTRACT_API_KEY="your abstract api key" # https://app.abstractapi.com/
OPENROUTER_API_KEY="your openrouter api key" # https://openrouter.ai/
TAVILY_API_KEY="your Tavily api key" # https://tavily.com/
# Vector Database (Pinecone)
PINECONE_API_KEY="your Pinecone API key" # https://app.pinecone.io/
PINECONE_INDEX_NAME="your index name" # e.g., portfolio-embeddings
# Google Gemini (for embeddings)
GOOGLE_API_KEY="your Google API key" # https://ai.google.dev/
#jwt auth
JWT_EXPIRY="1m"
JWT_SECRET="your jwt token" # use this command for linux = "openssl rand -hex 64" or node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" (works on windows/linux/mac)
```
## Vector Store Configuration
The vector store is configured in `lib/embeddings.ts` with the following settings:
- Dimension: 768 (Google Gemini embeddings)
- Metric: Cosine similarity
- Pod type: Starter (free tier)
You can modify these settings in the `initializeVectorStore` function if needed.
## 📸 Preview
---
## 📄 License
This project is open source under the [MIT License](https://opensource.org/licenses/MIT).
---
## 🙋♂️ Author
**Rushikesh Nimkar**
🔗 [rushikeshnimkar.xyz](https://rushikeshnimkar.xyz)
📧 rushikeshnimkar396@gmail.com