{"id":24586936,"url":"https://github.com/rushikeshnimkar/portfolio2025","last_synced_at":"2025-10-23T19:13:09.217Z","repository":{"id":273251200,"uuid":"919114663","full_name":"Rushikeshnimkar/portfolio2025","owner":"Rushikeshnimkar","description":"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.","archived":false,"fork":false,"pushed_at":"2025-03-13T12:13:22.000Z","size":10714,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T13:24:05.109Z","etag":null,"topics":["ai","aiagents","chatbot","gemini","github","github-pages","langchain","langgraph","openrouter","personal-website","pinecone","portfolio","portfolio-site","portfolio-template","portfolio-website","template","vectorembeddings"],"latest_commit_sha":null,"homepage":"https://rushikeshnimkar.xyz","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rushikeshnimkar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Rushikeshnimkar"}},"created_at":"2025-01-19T18:34:19.000Z","updated_at":"2025-03-13T12:13:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"7682e290-cdcb-4414-acdb-bd4129332474","html_url":"https://github.com/Rushikeshnimkar/portfolio2025","commit_stats":null,"previous_names":["rushikeshnimkar/portfolio2025"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rushikeshnimkar%2Fportfolio2025","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rushikeshnimkar%2Fportfolio2025/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rushikeshnimkar%2Fportfolio2025/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rushikeshnimkar%2Fportfolio2025/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rushikeshnimkar","download_url":"https://codeload.github.com/Rushikeshnimkar/portfolio2025/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244094275,"owners_count":20397020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","aiagents","chatbot","gemini","github","github-pages","langchain","langgraph","openrouter","personal-website","pinecone","portfolio","portfolio-site","portfolio-template","portfolio-website","template","vectorembeddings"],"created_at":"2025-01-24T06:15:43.190Z","updated_at":"2025-10-23T19:13:09.193Z","avatar_url":"https://github.com/Rushikeshnimkar.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Rushikeshnimkar"],"categories":[],"sub_categories":[],"readme":"# Rushikesh Nimkar's Portfolio\n\nA modern portfolio website built with Next.js 15, featuring AI chat integration and interactive animations.\n\n## ✨ Features\n\n- **AI-Powered Email Generation**: Create professional emails with AI assistance\n- **Interactive Chat**: Talk directly with an AI version of me using advanced LLMs\n- **Vector Embeddings**: Semantic search capabilities for more accurate AI responses\n- **Dynamic Animations**: Engaging UI with smooth animations\n- **Responsive Design**: Seamless experience across all devices\n- **Dark Mode**: Eye-friendly interface for all lighting conditions\n- **Project Showcase**: Interactive displays of my work and contributions\n- **AI-Powered Dynamic Theming**: Transform the entire interface with natural language requests, allowing real-time visual customization\n\n---\n\n## 🛠 Tech Stack\n\n| Layer               | Technologies                                        |\n| ------------------- | --------------------------------------------------- |\n| **Frontend**        | Next.js 15, TypeScript, Tailwind CSS, Framer Motion |\n| **Backend**         | Node.js, Next.js API Routes                         |\n| **AI Integration**  | OpenRouter API                                      |\n| **Embeddings**      | Google Gemini                                       |\n| **Vector Database** | Pinecone                                            |\n| **Search**          | Tavily API                                          |\n| **Email**           | Nodemailer, Abstract API                            |\n| **Deployment**      | Vercel + Edge Functions                             |\n\n---\n\n## Model Status\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://api-status-u94c.onrender.com/status.svg?model=x-ai/grok-4-fast:free\u0026uptime=true\"\u003e\n    \u003cimg src=\"https://api-status-u94c.onrender.com/status.svg?model=x-ai/grok-4-fast:free\u0026uptime=true\" alt=\"x-ai/grok-4-fast:free Status (Uptime)\" /\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://api-status-u94c.onrender.com/status.svg?model=tngtech/deepseek-r1t-chimera:free\u0026uptime=true\"\u003e\n    \u003cimg src=\"https://api-status-u94c.onrender.com/status.svg?model=tngtech/deepseek-r1t-chimera:free\u0026uptime=true\" alt=\"deepseek-r1t-chimera Status (Uptime)\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThis badge shows the **real-time operational status** of selected AI models from OpenRouter.\n\nEach badge displays:\n\n- **Model name**: The model's identifier\n- **Status**:\n  - `operational` – model is healthy (uptime ≥ 90%)\n  - `Degraded` – degraded performance (uptime ≥ 50%)\n  - `offline` – not available (uptime \u003c 50%)\n- **Uptime**: The average uptime over the past 30 minutes\n\nClicking the badge opens the live SVG endpoint.\n\n\u003e ⚠️ **Note**:  \n\u003e A `Degraded` does **not** mean the model is completely unusable.  \n\u003e It simply indicates that **some requests may fail intermittently** due to degraded uptime or performance.\n\nThis badge shows the real-time operational status of the Kimi model.\n\n---\n\n## 🚀 Getting Started\n\n\u003e **⚠️ 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.\n\n1. Clone and install:\n\n```bash\ngit clone https://github.com/Rushikeshnimkar/portfolio2025.git\ncd portfolio\nnpm install\n```\n\n2. Update your personal information:\n\n```bash\n# Edit the components/character/character.ts file with your own details\n# This is crucial for the AI to represent you correctly\n```\n\n3. Run development server:\n\n```bash\nnpm run dev\n```\n\n\u003e **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! ☕\n\n4. Open [http://localhost:3000](http://localhost:3000)\n\n\u003e **⚠️ IMPORTANT NOTE:** Make sure to uncomment the following line in `api/chat/route.ts` \u0026 `api/theme/route.ts` when working in development:\n\u003e\n\u003e ```javascript\n\u003e // \"http://localhost:3000\",\n\u003e ```\n\n## 📧 Email Generation Feature\n\nThe portfolio includes an AI-powered email generation system that:\n\n- Creates professional emails based on simple prompts\n- Validates sender email addresses\n- Supports both AI-generated and manual email composition\n- Features elegant text generation animations\n\n## 💬 AI Chat Integration\n\nChat with an AI version of me that:\n\n- Answers questions about my skills, experience, and projects\n- Accesses real-time information when needed via Tavily search\n- Maintains conversation context across messages\n- Provides accurate information about my background and expertise\n- Uses vector embeddings for more accurate and relevant responses\n\n## 🎨 AI Theme Customization\n\nThe portfolio includes an AI-powered theme customization system that:\n\n- Transforms the UI with natural language commands\n- Understands specific page elements through vector embeddings\n- Applies changes in real-time with visual feedback\n- Generates custom JavaScript on-the-fly for unique visual effects\n- Maintains responsive design across all device sizes\n- Supports both page-specific and site-wide modifications\n\n## 🔍 Vector Database Integration\n\nThe portfolio uses Pinecone vector database to store and retrieve embeddings:\n\n- Semantic search capabilities for more accurate AI responses\n- Google Gemini embeddings for high-quality vector representations\n- Efficient retrieval of relevant information based on user queries\n- One-time initialization with profile data for persistent storage\n\n## 🔒 Security Features\n\n- CORS protection for API routes\n- Email validation to prevent spam\n- Rate limiting on sensitive endpoints\n\n## Environment Variables\n\nCreate a `.env` file in the root directory and add your environment variables:\n\n```env\n# Development environment (all the apis are free)\nEMAIL_USER=\"your emailid\"\nEMAIL_APP_PASSWORD=\"your App Password\" # get it from your Google Account settings\nABSTRACT_API_KEY=\"your abstract api key\" # https://app.abstractapi.com/\nOPENROUTER_API_KEY=\"your openrouter api key\" # https://openrouter.ai/\nTAVILY_API_KEY=\"your Tavily api key\" # https://tavily.com/\n\n# Vector Database (Pinecone)\nPINECONE_API_KEY=\"your Pinecone API key\" # https://app.pinecone.io/\nPINECONE_INDEX_NAME=\"your index name\" # e.g., portfolio-embeddings\n\n# Google Gemini (for embeddings)\nGOOGLE_API_KEY=\"your Google API key\" # https://ai.google.dev/\n\n#jwt auth\nJWT_EXPIRY=\"1m\"\nJWT_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)\n```\n\n## Vector Store Configuration\n\nThe vector store is configured in `lib/embeddings.ts` with the following settings:\n\n- Dimension: 768 (Google Gemini embeddings)\n- Metric: Cosine similarity\n- Pod type: Starter (free tier)\n\nYou can modify these settings in the `initializeVectorStore` function if needed.\n\n## 📸 Preview\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/3fd52f61-e898-4d80-8df0-2730691c1926\" alt=\"Preview 1\" width=\"45%\" /\u003e\n  \u0026nbsp;\n  \u003cimg src=\"https://github.com/user-attachments/assets/2dadd649-c3d2-4e54-b554-7c2d2049c9d8\" alt=\"Preview 2\" width=\"45%\" /\u003e\n\u003c/p\u003e\n\n---\n\n## 📄 License\n\nThis project is open source under the [MIT License](https://opensource.org/licenses/MIT).\n\n---\n\n## 🙋‍♂️ Author\n\n**Rushikesh Nimkar**  \n🔗 [rushikeshnimkar.xyz](https://rushikeshnimkar.xyz)  \n📧 rushikeshnimkar396@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushikeshnimkar%2Fportfolio2025","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frushikeshnimkar%2Fportfolio2025","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushikeshnimkar%2Fportfolio2025/lists"}