diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..5485fbfd6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/dist +node_modules +.env diff --git a/README.md b/README.md index 1f0d3775c..bf9b5fd1c 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ Created by [@ammaar](https://x.com/ammaar) - `GOOGLE_API_KEY`: Your Google API key with access to Gemini API - `NODE_ENV`: Set to "development" by default, use "production" for production builds +- `BASE_URL`: Set this to your own proxied API base URL (e.g., Cloudflare AI gateway endpoint). Defaults to 'https://generativelanguage.googleapis.com'. ## Development diff --git a/server/env.ts b/server/env.ts index 3259812b1..5847fd6a7 100644 --- a/server/env.ts +++ b/server/env.ts @@ -22,6 +22,7 @@ export function setupEnvironment() { return { GOOGLE_API_KEY: process.env.GOOGLE_API_KEY, + BASE_URL: process.env.BASE_URL || "https://generativelanguage.googleapis.com", NODE_ENV: process.env.NODE_ENV || "development", }; } diff --git a/server/routes.ts b/server/routes.ts index f205ffd2c..6421dd69c 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -1,10 +1,9 @@ -import type { Express } from "express"; -import { createServer, type Server } from "http"; import { GoogleGenerativeAI, - type ChatSession, - type GenerateContentResult, + type ChatSession } from "@google/generative-ai"; +import type { Express } from "express"; +import { createServer, type Server } from "http"; import { marked } from "marked"; import { setupEnvironment } from "./env"; @@ -18,6 +17,8 @@ const model = genAI.getGenerativeModel({ topK: 1, maxOutputTokens: 2048, }, +}, { + baseUrl: env.BASE_URL, }); // Store chat sessions in memory diff --git a/vite.config.ts b/vite.config.ts index 89b614bc9..ecd59891b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,4 +20,9 @@ export default defineConfig({ outDir: path.resolve(__dirname, "dist/public"), emptyOutDir: true, }, + server: { + proxy: { + "/api": "http://localhost:3000", + }, + } });