{"id":30683301,"url":"https://github.com/rishilahoti/vibe-search","last_synced_at":"2026-05-19T10:04:26.583Z","repository":{"id":310831102,"uuid":"1041392306","full_name":"rishilahoti/vibe-search","owner":"rishilahoti","description":"Vibe Search is an interactive Next.js application that helps users discover real estate properties based on descriptive \"vibes\".It combines a search API, AI-driven property matching, and modern UI components with animations and effects to deliver a delightful user experience.","archived":false,"fork":false,"pushed_at":"2025-08-20T12:58:53.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-20T14:41:18.987Z","etag":null,"topics":["chatbot","gemini-api","nextjs","typescript"],"latest_commit_sha":null,"homepage":"https://vibe-search-orpin.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rishilahoti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-08-20T12:22:15.000Z","updated_at":"2025-08-20T12:58:56.000Z","dependencies_parsed_at":"2025-08-20T14:41:22.675Z","dependency_job_id":"dacc60a8-950c-4bc2-acd4-225943e14442","html_url":"https://github.com/rishilahoti/vibe-search","commit_stats":null,"previous_names":["rishilahoti/vibe-search"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rishilahoti/vibe-search","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishilahoti%2Fvibe-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishilahoti%2Fvibe-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishilahoti%2Fvibe-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishilahoti%2Fvibe-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rishilahoti","download_url":"https://codeload.github.com/rishilahoti/vibe-search/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishilahoti%2Fvibe-search/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273183160,"owners_count":25059812,"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","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["chatbot","gemini-api","nextjs","typescript"],"created_at":"2025-09-01T19:46:47.689Z","updated_at":"2026-05-19T10:04:26.544Z","avatar_url":"https://github.com/rishilahoti.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# Vibe Search 🔮\n## ✨ About The Project\n\nVibe Search is an interactive Next.js application that helps users discover real estate properties based on descriptive \"vibes\" (e.g., \"beach property in Goa\", \"mountain retreat\", \"farmhouse investment\").\nIt combines a search API, AI-driven property matching, and modern UI components with animations and effects to deliver a delightful user experience.\n\n---\n\n## 🚀 Key Features\n\n-   **🤖 AI-Powered Semantic Search**: Users can input natural language queries like \"a serene mountain retreat for yoga\" or \"a vibrant beachfront house for parties\" to find relevant properties.\n-   **💬 Interactive Chat UI**: A modern, chat-based interface for a more intuitive and engaging search experience.\n-   **✨ Dynamic \u0026 Animated Frontend**:\n    -   A procedural WebGL animated background (`DarkVeil`) creates an immersive atmosphere.\n    -   `SpotlightCard` components provide a cool hover effect that follows the user's cursor.\n    -   Animated gradient text and badges add a polished, premium feel.\n-   **✅ Detailed \u0026 Relevant Results**: Each property card displays key information, including a relevance score, the reasons it matches the user's vibe, and descriptive tags.\n-   **⚡️ Serverless Backend**: The search logic is handled by a Next.js API route, making the application fast and scalable.\n\n---\n\n## 🛠️ Tech Stack\n\nThis project is built with a modern, TypeScript-first tech stack.\n\n-   **Framework**: [Next.js](https://nextjs.org/) (App Router)\n-   **Language**: [TypeScript](https://www.typescriptlang.org/)\n-   **Styling**: [Tailwind CSS](https://tailwindcss.com/)\n-   **AI Backend**: Google Gemini API (for the semantic `findPropertiesByVibe` function)\n-   **Graphics \u0026 Animation**:\n    -   [ogl](https://oframe.github.io/ogl/): A small, effective WebGL library for the animated background.\n    -   Custom CSS animations and React hooks for UI effects.\n\n---\n\n## ⚙️ Getting Started\n\nTo get a local copy up and running, follow these simple steps.\n\n### Prerequisites\n\nYou need to have Node.js and npm (or yarn) installed on your machine.\n\n### Installation\n\n1.  **Clone the repository:**\n    ```sh\n    git clone https://github.com/your-username/vibe-search.git\n    cd vibe-search\n    ```\n2.  **Install dependencies:**\n    ```sh\n    npm install\n    # or\n    yarn install\n    ```\n3.  **Set up environment variables:**\n    You'll need to create a `.env.local` file in the root of the project and add your Google Gemini API key.\n    ```env\n    GEMINI_API_KEY='YOUR_API_KEY_HERE'\n    ```\n4.  **Run the development server:**\n    ```sh\n    npm run dev\n    # or\n    yarn dev\n    ```\n    Open [http://localhost:3000](https://www.google.com/search?q=http://localhost:3000) in your browser to see the result.\n\n---\n\n## 🔌 API Endpoint\n\nThe project contains a core API endpoint for handling the search logic.\n\n### Vibe Search\n\n-   **Endpoint**: `POST /api/chat`\n\n-   **Description**: Takes a user's natural language message and returns a list of matching properties from the `enhancedProperties.json` dataset.\n\n-   **Request Body**:\n\n    ```json\n    {\n    \t\"message\": \"A quiet and peaceful place surrounded by nature.\"\n    }\n    ```\n\n-   **Success Response** (`200 OK`):\n\n    ```json\n    {\n      \"success\": true,\n      \"results\": [\n        {\n          \"id\": \"prop1\",\n          \"ProjectName\": \"Serene Meadows\",\n          \"vibeSummary\": \"An oasis of calm...\",\n          \"...other property details\"\n        }\n      ],\n      \"matchData\": [\n        {\n          \"id\": \"prop1\",\n          \"relevanceScore\": 9,\n          \"matchReasons\": [\"Surrounded by lush greenery...\", \"Designed for tranquility...\"]\n        }\n      ],\n      \"query\": \"A quiet and peaceful place surrounded by nature.\"\n    }\n    ```\n\n-   **Endpoint**: `GET /api/chat`\n\n-   **Description**: A simple health-check endpoint to confirm the API is running.\n\n---\n\n## 🧩 Components Overview\n\nThe frontend is built with several reusable and specialized React components.\n\n-   `VibeSearch.tsx`: The main component that orchestrates the entire chat interface, state management, and API calls.\n-   `SpotlightCard.tsx`: An interactive card used to display each property result. It features a beautiful spotlight effect on mouse hover.\n-   `DarkVeil.tsx`: Creates the stunning, procedural WebGL background animation using `ogl` and GLSL shaders.\n-   `AnimatedGradientText.tsx` \u0026 `GradientText.tsx`: Reusable components for creating eye-catching animated gradient text effects.\n-   `AnimateBadge.tsx`: A small, animated badge component used for announcements.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishilahoti%2Fvibe-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishilahoti%2Fvibe-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishilahoti%2Fvibe-search/lists"}