diff --git a/.gitattributes b/.gitattributes
index a6344aac8c09253b3b630fb776ae94478aa0275b..16c1d89c64f112a8a71fa0b71b50ff18aded3b35 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
+generated-icon.png filter=lfs diff=lfs merge=lfs -text
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..948f660e23ac00cd2501673423c1bff96ea65538
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Ammaar Reshi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 94f88fb0bae3684ee9e57c5f8c18d3f9cb7180ae..1f0d3775c2aabbdb70b7f8aa3ab35cc7f42b1cf7 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,92 @@
----
-title: Gsearch
-emoji: 🦀
-colorFrom: indigo
-colorTo: green
-sdk: docker
-pinned: false
-short_description: gemini-search
----
-
-Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
+# Gemini Search
+
+A Perplexity-style search engine powered by Google's Gemini 2.0 Flash model with grounding through Google Search. Get AI-powered answers to your questions with real-time web sources and citations.
+
+Created by [@ammaar](https://x.com/ammaar)
+
+
+
+
+## Features
+
+- 🔍 Real-time web search integration
+- 🤖 Powered by Google's latest Gemini 2.0 Flash model
+- 📚 Source citations and references for answers
+- 💬 Follow-up questions in the same chat session
+- 🎨 Clean, modern UI inspired by Perplexity
+- ⚡ Fast response times
+
+## Tech Stack
+
+- Frontend: React + Vite + TypeScript + Tailwind CSS
+- Backend: Express.js + TypeScript
+- AI: Google Gemini 2.0 Flash API
+- Search: Google Search API integration
+
+## Setup
+
+### Prerequisites
+
+- Node.js (v18 or higher recommended)
+- npm or yarn
+- A Google API key with access to Gemini API
+
+### Installation
+
+1. Clone the repository:
+
+ ```bash
+ git clone https://github.com/ammaarreshi/Gemini-Search.git
+ cd Gemini-Search
+ ```
+
+2. Install dependencies:
+
+ ```bash
+ npm install
+ ```
+
+3. Create a `.env` file in the root directory:
+
+ ```
+ GOOGLE_API_KEY=your_api_key_here
+ ```
+
+4. Start the development server:
+
+ ```bash
+ npm run dev
+ ```
+
+5. Open your browser and navigate to:
+ ```
+ http://localhost:3000
+ ```
+
+## Environment Variables
+
+- `GOOGLE_API_KEY`: Your Google API key with access to Gemini API
+- `NODE_ENV`: Set to "development" by default, use "production" for production builds
+
+## Development
+
+- `npm run dev`: Start the development server
+- `npm run build`: Build for production
+- `npm run start`: Run the production server
+- `npm run check`: Run TypeScript type checking
+
+## Security Notes
+
+- Never commit your `.env` file or expose your API keys
+- The `.gitignore` file is configured to exclude sensitive files
+- If you fork this repository, make sure to use your own API keys
+
+## License
+
+MIT License - feel free to use this code for your own projects!
+
+## Acknowledgments
+
+- Inspired by [Perplexity](https://www.perplexity.ai/)
+- Built with [Google's Gemini API](https://ai.google.dev/)
+- UI components from [shadcn/ui](https://ui.shadcn.com/)
diff --git a/client/apple-touch-icon.png b/client/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b9475a962011a50097d7f264b381ed983189a08
Binary files /dev/null and b/client/apple-touch-icon.png differ
diff --git a/client/favicon.png b/client/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8702719b27cd178d967340d0e26f09391609639c
Binary files /dev/null and b/client/favicon.png differ
diff --git a/client/favicon.svg b/client/favicon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4492afe01215529cc094a3a22d012d58e9bf5226
--- /dev/null
+++ b/client/favicon.svg
@@ -0,0 +1,12 @@
+
diff --git a/client/index.html b/client/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..594cb4bdd164eb3ed7c51ff055b20c4d75ab710c
--- /dev/null
+++ b/client/index.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gemini Search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/manifest.json b/client/manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa9bedfa088674d3f5ac205ad4575374aa4fe88d
--- /dev/null
+++ b/client/manifest.json
@@ -0,0 +1,28 @@
+{
+ "name": "Gemini Search",
+ "short_name": "Gemini",
+ "description": "A search engine powered by Google's Gemini Flash",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#FCFCF9",
+ "theme_color": "#FCFCF9",
+ "orientation": "portrait",
+ "icons": [
+ {
+ "src": "/favicon.png",
+ "sizes": "32x32",
+ "type": "image/png"
+ },
+ {
+ "src": "/apple-touch-icon.png",
+ "sizes": "180x180",
+ "type": "image/png"
+ },
+ {
+ "src": "/pwa-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "any maskable"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/client/og-image.png b/client/og-image.png
new file mode 100644
index 0000000000000000000000000000000000000000..d60ad4392794fedbf98727b11e502e3db34e792c
Binary files /dev/null and b/client/og-image.png differ
diff --git a/client/public/apple-touch-icon.png b/client/public/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b9475a962011a50097d7f264b381ed983189a08
Binary files /dev/null and b/client/public/apple-touch-icon.png differ
diff --git a/client/public/favicon.png b/client/public/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8702719b27cd178d967340d0e26f09391609639c
Binary files /dev/null and b/client/public/favicon.png differ
diff --git a/client/public/manifest.json b/client/public/manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa9bedfa088674d3f5ac205ad4575374aa4fe88d
--- /dev/null
+++ b/client/public/manifest.json
@@ -0,0 +1,28 @@
+{
+ "name": "Gemini Search",
+ "short_name": "Gemini",
+ "description": "A search engine powered by Google's Gemini Flash",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#FCFCF9",
+ "theme_color": "#FCFCF9",
+ "orientation": "portrait",
+ "icons": [
+ {
+ "src": "/favicon.png",
+ "sizes": "32x32",
+ "type": "image/png"
+ },
+ {
+ "src": "/apple-touch-icon.png",
+ "sizes": "180x180",
+ "type": "image/png"
+ },
+ {
+ "src": "/pwa-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "any maskable"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/client/public/pwa-512x512.png b/client/public/pwa-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..c702c8dea32cb9f51b59dc88f777817b19945560
Binary files /dev/null and b/client/public/pwa-512x512.png differ
diff --git a/client/public/splash/apple-splash-1125-2436.jpg b/client/public/splash/apple-splash-1125-2436.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..60dde158deee96a56e72a853a76ed9ec7a2171d3
Binary files /dev/null and b/client/public/splash/apple-splash-1125-2436.jpg differ
diff --git a/client/public/splash/apple-splash-1170-2532.jpg b/client/public/splash/apple-splash-1170-2532.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3b9cc6b914b64d1fd50d26d6dee32253d1a93323
Binary files /dev/null and b/client/public/splash/apple-splash-1170-2532.jpg differ
diff --git a/client/public/splash/apple-splash-1179-2556.jpg b/client/public/splash/apple-splash-1179-2556.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3b9cc6b914b64d1fd50d26d6dee32253d1a93323
Binary files /dev/null and b/client/public/splash/apple-splash-1179-2556.jpg differ
diff --git a/client/public/splash/apple-splash-1290-2796.jpg b/client/public/splash/apple-splash-1290-2796.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cb44df8e0a5b06cf8b6bcdcffe1eb42010bb5b46
Binary files /dev/null and b/client/public/splash/apple-splash-1290-2796.jpg differ
diff --git a/client/public/splash/apple-splash-1536-2048.jpg b/client/public/splash/apple-splash-1536-2048.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d6d28e017f8c44d20f9b8d39c2494fe24031f9cc
Binary files /dev/null and b/client/public/splash/apple-splash-1536-2048.jpg differ
diff --git a/client/public/splash/apple-splash-1668-2388.jpg b/client/public/splash/apple-splash-1668-2388.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9c863029975dc3b0daa76ab1fa7430a5870cad77
Binary files /dev/null and b/client/public/splash/apple-splash-1668-2388.jpg differ
diff --git a/client/public/splash/apple-splash-2048-2732.jpg b/client/public/splash/apple-splash-2048-2732.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0bba1ffa9f5310f4cffcab78f2559dc67ebb97f4
Binary files /dev/null and b/client/public/splash/apple-splash-2048-2732.jpg differ
diff --git a/client/src/App.tsx b/client/src/App.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..21eec0477250d6b37deafc2c9d1f9316c022bc5b
--- /dev/null
+++ b/client/src/App.tsx
@@ -0,0 +1,41 @@
+import { Switch, Route, useLocation } from "wouter";
+import { Home } from "@/pages/Home";
+import { Search } from "@/pages/Search";
+import { Card, CardContent } from "@/components/ui/card";
+import { AlertCircle } from "lucide-react";
+import { AnimatePresence } from "framer-motion";
+
+function App() {
+ const [location] = useLocation();
+
+ return (
+
+
+
+
+
+
+
+ );
+}
+
+function NotFound() {
+ return (
+