Limited Search, GitHub'da AI Search Engine adıyla yayımlanan bir yapay zeka cevap motorudur: bir soru sorarsın, Google Arama sonuçlarına dayalı, canlı ve akış halinde bir yanıt alırsın; yanıttaki numaralı atıflar seni kaynaklara götürür. Uygulama limited-search.com adresinde canlıdır ve ayrı bir arka uç (backend) olmadan, tek bir Next.js uygulaması olarak çalışır.

İllüstrasyon: koyu arka plan üzerinde beyaz ve mavi Limited Search yazısı; bir grafiktir, uygulamanın ekran görüntüsü değildir
Yalnızca illüstrasyon: Limited Search yazısı bir grafik olarak gösteriliyor. Uygulamanın ekran görüntüsü değildir.

Proje ne yapıyor?

Limited Search üç moda sahiptir. Arama modu Gemini'nin googleSearch aracını bağlar; model canlı Google aramaları yapar ve grounding (dayanak) meta verisi döndürür, arayüz bunu numaralı atıf etiketleri ve bir kaynaklar satırı olarak gösterir; Google'ın zorunlu tuttuğu arama önerisi bileşeni de buna dahildir. Sohbet modu aracı kullanmaz ve düz bir konuşma sağlar. Düşünme (Think) modu modelin düşünme seviyesini yükseltir ve düşünce özetlerini açılıp kapanan bir blokta akış halinde gösterir. Yanıtlar üretildikçe akar, kullanıcılar e-posta ve parola ya da Google OAuth ile giriş yapar ve konuşmalar Supabase'de saklanır. Arama modu, Kim bu ajanlar? yazısında anlatılan araç kullanımının küçük ve somut bir örneğidir: modele bir araç verilir ve model bu araçla canlı arama yapar.

Nasıl çalışıyor?

Her şey tek bir Next.js uygulamasında çalışır. Tarayıcı, Vercel üzerindeki bir Next.js route handler olan /api/search adresine POST isteği gönderir ve yanıtı server-sent events (SSE) olarak okur. Handler, Supabase Auth çerez oturumunu doğrular, consume_rate_limit RPC'si üzerinden Postgres tabanlı bir hız sınırlayıcı uygular, ardından Gemini'nin generateContentStream çağrısını yapar; arama modunda googleSearch aracı da eklenir. Akış; delta, thought, sources, citations, done ve error türünde olaylar taşır ve arayüz bunları Streamdown ile parça parça işler. README'deki teknoloji yığını şöyle:

  • Uygulama: Next.js 16 (App Router), React 19, TypeScript
  • Yapay zeka: Gemini (@google/genai) ve Google Search grounding
  • Kimlik doğrulama ve veri: Supabase (e-posta/parola ve Google OAuth, RLS'li Postgres)
  • Arayüz: Tailwind CSS v4, shadcn/ui, Streamdown, lucide-react, next-themes
  • Barındırma: Vercel (Hobby), main dalına push'ta yayına alır

Tasarım kararları neler?

Birkaç tercih projeyi küçük ve çalıştırması ucuz tutar. Ayrı bir arka uç yoktur ve API route durumsuz (stateless) kalır: konuşma geçmişi doğrudan tarayıcıdan, satır düzeyinde güvenlik (row-level security) altında Supabase'e yazılır. Hız sınırı sunucu tarafında, auth.uid() ile anahtarlanan bir security definer fonksiyonuyla uygulanır; sınırlayıcının kendisi hata verirse kod isteği geçirir ve Gemini kotasını son emniyet olarak kabul eder. Grounding segment ofsetleri UTF-8 bayt konumları olarak geldiği için src/lib/grounding.ts bunları JavaScript string indekslerine çevirir; böylece atıflar her dilde doğru yere oturur. Bir kod yorumuna göre arama modu varsayılan olarak gemini-2.5-flash, sohbet modu gemini-3.5-flash kullanır; çünkü ücretsiz katman anahtarlarında Google Search grounding kotası 2.5 modelinde vardır, 3.x ailesinde yoktur.

Sınırlamaları neler?

Limited Search tamamen ücretsiz katmanlarda çalışır: Vercel Hobby, Supabase Free ve Flash istekleri ile aylık grounding hakkını kapsayan Gemini API ücretsiz katmanı. Kullanıcı başına hız sınırları geçerlidir: aramada dakikada 10 ve günde 150, sohbette dakikada 20 ve günde 500 istek. Ücretsiz yapay zeka kotası tükendiğinde uygulama, sohbet modunu denemeyi ya da daha sonra gelmeyi öneren bir mesaj gösterir. Arama için giriş yapmak gerekir, tek bir sorgu 4.000 karakterle sınırlıdır, konuşma geçmişinden modele yalnızca son altı tur gönderilir ve route handler istek başına 120 saniyeyle sınırlandırılmıştır. README doğruluk, gecikme veya kullanım rakamı yayımlamaz; bu yüzden burada da hiçbiri yer almaz.

Denemek veya kodu okumak için nereye bakmalı?

Uygulama www.limited-search.com adresinde canlıdır. Kaynak kod GPL-3.0 lisansıyla GitHub'da, veritabanı şeması ise supabase/migrations/ klasöründe. Yerelde çalıştırmak için bağımlılıkları kur, .env.example dosyasını .env.local olarak kopyala ve NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, GEMINI_API_KEY değerlerini, isteğe bağlı olarak GEMINI_MODEL değerini doldur:

npm install
cp .env.example .env.local
npm run dev

Geliştirme sunucusu http://localhost:3000 adresinde açılır. Bunun gibi başka çalışmalar için Projeler sayfasına bakabilirsin.

Tek cümlelik versiyonu

Limited Search, Google Aramasına dayalı Gemini yanıtlarını numaralı atıflarla akış halinde sunan, kullanıcı başına hız sınırları olan ve tamamen ücretsiz katmanlarda çalışan bir Next.js uygulamasıdır.