diff --git a/.env.example b/.env.example index 466eb65..a1f8f78 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -# Copy to .env.local and fill in values. See README for provider setup. +# .env.local'a kopyalayın ve değerleri doldurun. Daha Fazlası için README dosyasını okuyun.. # --- Supabase (optional: response caching is off if these are empty) --- SUPABASE_URL= diff --git a/.gitignore b/.gitignore index 7b8da95..d1cf3ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# Dosyaları yok sayma hakkında daha fazla bilgi için https://help.github.com/articles/ignoring-files/ adresini ziyaret edin. -# dependencies +# dependencies / bağımlılıklar /node_modules /.pnp .pnp.* @@ -10,27 +10,27 @@ !.yarn/releases !.yarn/versions -# testing +# testing / Testler /coverage # next.js /.next/ /out/ -# production +# production / Yayınlama /build -# misc +# misc / diğerleri .DS_Store *.pem -# debug +# debug / hata ayıklama npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# env files (can opt-in for committing if needed) +# env files (can opt-in for committing if needed) / env dosyaları (gerekirse commit işlemine dahil edilebilir) .env* !.env.example diff --git a/AGENTS.md b/AGENTS.md index 8bd0e39..bc1d8f4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,5 @@ -# This is NOT the Next.js you know +# Bu Next.js DEĞİL, Biliyorsun. -This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. +Bu Sürümde uyumsuz değişiklikler bulunmaktadır — API'ler, kurallar ve dosya yapısı, eğitim verilerinizden farklı olabilir. Herhangi bir kod yazmadan önce `node_modules/next/dist/docs/` ilgili kılavuzu **okuyun.** Kullanımdan kaldırılacak özelliklere ilişkin uyarıları dikkate alın. diff --git a/README.md b/README.md index 64635f1..89b8e7f 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,58 @@ -# GitReverse +# GitReverse Turkish (Translated by mehmetdemir-tr) https://github.com/user-attachments/assets/f0cdb7b2-c6f0-4483-8a01-153170479f2e -Turn a **public GitHub repository** into a **single synthetic user prompt** that someone might paste into Cursor, Claude Code, Codex, etc. to vibe code the project from scratch. +Bir **Geliştirilmeye açık GitHub deposunu** birisinin Cursor, Claude Code, Codex vb. uygulamalara yapıştırarak projeyi sıfırdan kodlayabileceği **tek sentetik yapay zeka istem satırına** dönüştürün. -The app pulls **repo metadata**, a **root file tree** (depth 1), and the **README**, then uses an LLM via [OpenRouter](https://openrouter.ai/) to produce one short, conversational prompt grounded in that context. +Bu uygulama, **repo meta verilerini**, bir **kök dosya ağacını** (derinlik yani depth 1) ve **README** dosyasını alır; ardından [OpenRouter](https://openrouter.ai/) aracılığıyla bir LLM kullanarak bu bağlamda temellendirilmiş kısa ve sohbet tarzında bir istem satırı oluşturur. -Paste a GitHub URL or `owner/repo` on the home page. You can also open **`/owner/repo`** (e.g. `/vercel/next.js`) for a shareable link that runs the same flow. +Ana sayfaya bir Github URL'si veya 'owner/repo' (sahip/depo) yazın. Aynı iş akışını çalıştıran paylaşılabilir bir bağlantı için **'/sahip/depo'** (ör. '/vercel/next.js) adresinide açabilirsiniz. -GitHub-style **`/owner/repo/tree/...`** URLs on this site **redirect to `/owner/repo`** so they do not 404. The reverse flow still uses the whole repo for now; **subfolder-aware** context (scoped to that path) is planned for a later change. +Bu sitedeki GitHub tarzı **'/owner/repo/tree/...'** URL'leri, 404 hatası vermemeleri için **`/owner/repo`** adresine yönlendirilir. Ters akış şimdilik hala tüm depoyu kullanmaktadır; **alt klasörleri algılayan** bağlam (o yolun kapsamına dahil) daha sonraki bir güncellemede eklenecektir. -## Stack +## Yığın (Stack) +Next.js (Uygulama Yönlendiricisi), React, TypeScript, Tailwind CSS, Github API Ve OpenRouter. -Next.js (App Router), React, TypeScript, Tailwind CSS, GitHub API, OpenRouter. +## Yapılandırma +`.env.example` dosyasını `.env.local` dosyasına kopyalayın. **`OPENROUTER_API_KEY`**'e ihtiyacınız var. İsteğe bağlı: `OPENROUTER_MODEL` (varsayılan olarak `google/gemini-2.5-pro`), daha iyi GitHub hız sınırları için `GITHUB_TOKEN` ve sunucu tarafında önbellekleme istiyorsanız örnek dosyadaki Supabase ortam değişkenleri. -## Configuration +### Özel ters yönlendirme (isteğe bağlı) -Copy `.env.example` to `.env.local`. You need **`OPENROUTER_API_KEY`**. Optional: `OPENROUTER_MODEL` (defaults to `google/gemini-2.5-pro`), `GITHUB_TOKEN` for better GitHub rate limits, and Supabase env vars from the example file if you want server-side caching. -### Custom reverse (optional) -For **deep / focus** prompts, run the **custom_reverse** service (separate TypeScript project; see its `README`; `pnpm dev`, default port **3001**) locally or deploy it to your own backend. In `.env.local` set: +**deep / focus** istemleri için, **custom_reverse** hizmetini (ayrı bir TypeScript projesi; `README` dosyasına bakın; `pnpm dev`, varsayılan bağlantı noktası **3001**) yerel olarak çalıştırın veya kendi arka ucunuza dağıtın. `.env.local` dosyasında şunu ayarlayın: + + `CUSTOM_REVERSE_SERVICE_URL=http://localhost:3001` -Successful runs are stored in Supabase (`custom_prompt_cache`) when `SUPABASE_URL` and `SUPABASE_PUBLISHABLE_KEY` are set—they are **not** shown in the public library. -Then enable **Custom reverse** on the home page and describe what to reverse-engineer. -## Development +`SUPABASE_URL` ve `SUPABASE_PUBLISHABLE_KEY` ayarlandığında başarılı çalıştırmalar Supabase'de (`custom_prompt_cache`) saklanır; bunlar genel kütüphanede **görünmez**. + + + +Ardından ana sayfada **Özel tersine çevirme** seçeneğini etkinleştirin ve neyin tersine mühendislik yapılacağını açıklayın. + + + +## Geliştirme + ```bash + pnpm install + pnpm dev + ``` -Open [http://localhost:3000](http://localhost:3000). -```bash -pnpm build -pnpm start -pnpm lint -``` -Shout out to [GitIngest](http://github.com/coderamp-labs/gitingest) for inspiration. +[http://localhost:3000](http://localhost:3000) adresini açın. + + +[GitIngest](http://github.com/coderamp-labs/gitingest)'e fikir ve ilham için teşekkürler! :) + +***Çeviri: mehmetdemir-tr (Mehmet Demir)*** + diff --git a/app/api/increment-views/route.ts b/app/api/increment-views/route.ts index ad6947b..d7a83fd 100644 --- a/app/api/increment-views/route.ts +++ b/app/api/increment-views/route.ts @@ -22,7 +22,7 @@ if ( ) { throw new Error( "[increment-views] VIEWS_IP_SALT is not set. " + - "Set a random secret (openssl rand -hex 32) in your deployment env." + "Deployment ortamında rastgele bir secret ayarlayın (openssl rand -hex 32)." ); } diff --git a/app/history/page.tsx b/app/history/page.tsx index 2a41012..d835a32 100644 --- a/app/history/page.tsx +++ b/app/history/page.tsx @@ -1,8 +1,8 @@ import { HistoryPage } from "@/components/history-page"; export const metadata = { - title: "History — GitReverse", - description: "Repositories you recently viewed on GitReverse.", + title: "Geçmiş — GitReverse", + description: "GitReverse'de görüntülediğin Depoların geçmişini görüntüle.", }; export default function HistoryRoute() { diff --git a/app/layout.tsx b/app/layout.tsx index 7a46845..fef2160 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -16,7 +16,7 @@ const geistMono = Geist_Mono({ export const metadata: Metadata = { title: "GitReverse", description: - "Turn a GitHub repository into a plain-language coding agent prompt.", + "Herhangi bir GitHub deposunu düz metin olarak hazırlanmış bir isteme dönüştürün.", }; export default function RootLayout({ diff --git a/app/library/page.tsx b/app/library/page.tsx index 04f65ec..4e8548b 100644 --- a/app/library/page.tsx +++ b/app/library/page.tsx @@ -5,9 +5,9 @@ import { LibraryPage } from "@/components/library-page"; export const dynamic = "force-dynamic"; export const metadata = { - title: "Prompt Library — GitReverse", + title: "Komut Kütüphanesi — GitReverse", description: - "Browse 1,000+ reverse-engineered prompts from real GitHub repositories.", + "1,000+'den fazla oluşturulmuş komut kütüphanesini gezin.", }; const INITIAL_LIMIT = 24; diff --git a/components/history-page.tsx b/components/history-page.tsx index d61bdd8..5a652ff 100644 --- a/components/history-page.tsx +++ b/components/history-page.tsx @@ -49,9 +49,9 @@ function isHistoryEntry(x: unknown): x is HistoryEntry { const gt = (x as HistoryEntry).lastGenerationType; if ( gt !== undefined && - gt !== "quick" && - gt !== "deep" && - gt !== "manual" + gt !== "hızlı" && + gt !== "derin" && + gt !== "manuel" ) { return false; } @@ -64,15 +64,15 @@ function isHistoryEntry(x: unknown): x is HistoryEntry { function relativeTime(iso: string): string { const diff = Date.now() - new Date(iso).getTime(); const s = Math.floor(diff / 1000); - if (s < 60) return "just now"; + if (s < 60) return "Şimdi"; const m = Math.floor(s / 60); - if (m < 60) return `${m}m ago`; + if (m < 60) return `${m}dk önce`; const h = Math.floor(m / 60); - if (h < 24) return `${h}h ago`; + if (h < 24) return `${h}saat önce`; const d = Math.floor(h / 24); - if (d < 30) return `${d}d ago`; + if (d < 30) return `${d}gün önce`; const mo = Math.floor(d / 30); - return `${mo}mo ago`; + return `${mo}ay önce`; } export function HistoryPage() { @@ -138,7 +138,7 @@ export function HistoryPage() { History
- Your previously generated prompts. + Önceki oluşturduğunuz istemler.
@@ -146,12 +146,12 @@ export function HistoryPage() {Loading…
) : entries.length === 0 ? (- No history yet. Check out the{" "} + Geçmiş yok (şimdilik) şuraya bir bak:{" "} - Prompt Library + istem Kütüphanesi .
@@ -172,19 +172,19 @@ export function HistoryPage() { function generationBadge(entry: HistoryEntry): { label: string; title?: string } | null { const t = entry.lastGenerationType; if (t === "deep") { - return { label: "Deep", title: "Deep Reverse" }; + return { label: "Derin", title: "Derin Tersine Mühendislik" }; } if (t === "manual") { const f = entry.lastManualFocus?.trim(); const short = f && f.length > 48 ? `${f.slice(0, 48).trimEnd()}…` : f; return { - label: short ? `Manual: ${short}` : "Manual", - title: f ?? "Manual control", + label: short ? `Manuel: ${short}` : "Manuel", + title: f ?? "Manuel Kontrol", }; } if (t === "quick") { - return { label: "Quick", title: "Quick reverse prompt" }; + return { label: "Hızlı", title: "Hızlı tersine komut" }; } return null; } diff --git a/components/library-page.tsx b/components/library-page.tsx index 760b470..67d408b 100644 --- a/components/library-page.tsx +++ b/components/library-page.tsx @@ -18,9 +18,9 @@ type SortOption = "trending" | "newest" | "oldest"; const SORT_OPTIONS: SortOption[] = ["newest", "trending", "oldest"]; const SORT_LABELS: Record- Reverse-engineered prompts from real GitHub repositories. + Tersine Mühendislikle oluşturan orijinal GitHub depolarının istemleri.
@@ -275,8 +275,8 @@ export function LibraryPage({ initialData, initialTotal }: LibraryPageProps) { {entries.length === 0 ? (No prompts found
-Try a different search term.
+Karaya vurdun! (404)
{/* a little joke :D*/} +Aradığın istem bulunamadı, farklı bir şey arat.
- Reverse engineer a codebase{" "} - into a prompt - that likely created it. + Bir kod tabanını{" "} + Komut İstemine + dönüştürün.
@@ -636,10 +636,10 @@ export function ReversePromptHome({ d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" /> - Processing… + Oluşturuluyor... > ) : ( - "Get Prompt" + "Komut istemini al" )} @@ -661,7 +661,7 @@ export function ReversePromptHome({ onCustomReverseCheckboxChange(e.target.checked) } /> - Manual control + Manuel Kontrol {customReverse ? (Sorry, we're a bit overwhelmed right now.
+Üzgünüz, biz' şuanda baya hararetli durumdayız, sonra gel olurmu?
Come back in a couple of hours, or check out what others have already generated:
+Bir kaç saat içinde geri gelin, yada zaten oluşturduğumuz komut istemlerine bakın.
- Browse the library + Kütüphaneyi gez @@ -762,7 +762,7 @@ export function ReversePromptHome({- Want more depth?{" "} + Biraz daha derinlikmi?{" "} - Deep Reverse + Derin Tersine Mühendislik
) : null} @@ -849,7 +849,7 @@ export function ReversePromptHome({ >