Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Acikbazaar.com - repository
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Türkiye'nin ücretsiz tahmin pazarı simülasyonu. Gerçek para yok; herkes ◈100.000 sanal krediyle başlar, gerçek hayat sorularına EVET/HAYIR der, sıralamada yarışır. Marketler Claude + web search ile üretilir ve otomatik çözülür. Canlı: https://acikbazaar.com · Stack: Next.js 16 (App Router, Turbopack) · Supabase (Postgres, Auth, Realtime) · Anthropic Claude · Resend · Vercel NEXT_PUBLIC_SUPABASE_URL boşsa ya da demo.supabase.co içeriyorsa uygulama demo modda çalışır (sahte marketler, kayıt kapalı). Supabase SQL Editor'da sırayla çalıştır (hepsi idempotent, tekrar çalıştırmak güvenli):查看完整 README ↗
Türkiye'nin ücretsiz tahmin pazarı simülasyonu. Gerçek para yok; herkes ◈100.000 sanal krediyle başlar, gerçek hayat sorularına EVET/HAYIR der, sıralamada yarışır. Marketler Claude + web search ile üretilir ve otomatik çözülür.
Canlı: https://acikbazaar.com · Stack: Next.js 16 (App Router, Turbopack) · Supabase (Postgres, Auth, Realtime) · Anthropic Claude · Resend · Vercel
npm install
cp .env.example .env.local # değerleri doldur
npm run dev # http://localhost:3000
NEXT_PUBLIC_SUPABASE_URL boşsa ya da demo.supabase.co içeriyorsa uygulama demo modda çalışır (sahte marketler, kayıt kapalı).
Supabase SQL Editor'da sırayla çalıştır (hepsi idempotent, tekrar çalıştırmak güvenli):
supabase-schema.sql — tablolar, RLS, seedsupabase-migration-2.sql — atomik place_bet, RLS sıkılaştırmasupabase-migration-3.sql — yorumlar, botlarsupabase-migration-4.sql — market önerilerisupabase-migration-5.sql — 100K kredi, streak, olasılık geçmişi, çoklu seçeneksupabase-migration-6.sql — Realtime yayını, public bahis akışısupabase-hotfix-register.sql — kayıt trigger'ı (her zaman RETURN NEW)supabase-migration-7.sql — çözüm gerekçesi, "sonuç bekleniyor" durumu, indeksler, yorum rate-limit, platform_stats()supabase-migration-8.sql — haftalık sıralama görünümü (leaderboard_weekly), davet sistemi (?ref=kullaniciadi, iki tarafa ◈5.000)supabase-migration-9.sql — kullanıcı adı kısıtı düzeltmesi, canlı (mark-to-market) sıralamasupabase-migration-10.sql — güvenlik: doğrudan bahis ekleme kapatıldı (bets_insert_own), iç RPC'ler (credit_and_update_user vb.) sadece servis rolüne açık, atomik bot_place_bet, adjust_balance, İstanbul saatine göre streak, davet sayacı düzeltmesiSupabase → Authentication → URL Configuration:
https://acikbazaar.com (localhost bırakılırsa doğrulama e-postaları localhost'a gider)https://acikbazaar.com/auth/callback, http://localhost:3000/auth/callbackvercel.json)| Saat (UTC) | Endpoint | Ne yapar |
|---|---|---|
| 06:00 | /api/cron/resolve | Süresi dolan marketleri web search ile çözer ve öder; karar veremezse closed (sonuç bekleniyor) yapar; hâlâ açık marketlerde erken kesinleşme tarar; açık market sayısını TARGET_ACTIVE_MARKETS'a tamamlar |
| 07:00 | /api/cron/report | Günlük operasyon raporunu e-postayla gönderir |
Cron istekleri Authorization: Bearer $CRON_SECRET taşır. CRON_SECRET Vercel'de tanımlı değilse cron 401 alır. Aynı işleri admin panelinden (/admin → Operasyon Sağlığı → "Şimdi çöz + tamamla") ya da manuel olarak tetikleyebilirsin:
curl -H "x-admin-secret: $ADMIN_SECRET" https://acikbazaar.com/api/cron/resolve
curl -H "x-admin-secret: $ADMIN_SECRET" -X POST -H 'Content-Type: application/json' \
-d '{"topUp":true}' https://acikbazaar.com/api/ai/generate
Botlar (is_bot = true, kişilikler lib/botVoice.ts) /api/bots/tick ile bahis yapar: her tick 4-8 bahis, 5 dk throttle, 02:00-07:00 TRT arası uyur, her bot+market ikilisi için sabit "kanaat" (aynı bot aynı markette tutarlı), az bahis alan ve yakında kapanacak marketlere öncelik. Tetikleyiciler:
lib/botTrigger.ts).GET https://acikbazaar.com/api/bots/tick çağır, header: x-admin-secret: <ADMIN_SECRET>.?force=1&burst=25 ile throttle'ı atlayıp 25 bahis üretir (yeni market seti yükledikten sonra hacim kazandırmak için).curl -H "x-admin-secret: $ADMIN_SECRET" "https://acikbazaar.com/api/bots/tick?force=1&burst=25"
lib/botVoice.ts → PERSONAS: her botun biyografisi, konuşma ağzı (voice), olaylara yaklaşımı (stance), few-shot örnek yorumları, bahis aralığı, kalabalığa ters oynama eğilimi (contrarian), konuşkanlığı (chattiness), ilgi alanı kategorileri (likes) ve orana değinme olasılığı (oddsTalk).
oddsTalk olasılığıyla girer.@ad ile laf atabilir.Yeni bot eklemek: PERSONAS'a bir giriş ekle, deploy et, /admin → Botları eşitle. Eksik bot hesapları (<ad>@bots.acikbazaar.com) otomatik açılır ve is_bot işaretlenir.
supabase-seed-markets-2026-09.sql elle küratörlü, güncel gündeme dayalı 39 market içerir (spor, ekonomi, siyaset, teknoloji, eğlence, hava, dünya). İdempotenttir; SQL Editor'da çalıştırıp ardından bot burst'ü tetikleyin. Anthropic anahtarı çalışınca cron bu seti otomatik üretimle tamamlar.
Son 150 bahsi listeler: saat (TRT), kim (bot/kullanıcı ikonu), market, taraf, miktar, oran. Filtreler: hepsi / kullanıcılar / botlar / 5K+. Üstte son 24 saat özeti. Servis rolü ile okunur (RLS'den bağımsız), kullanıcı adı dışında kimlik bilgisi göstermez.
supabase-migration-9.sql iki şey yapar: kullanıcı adı kısıtını düzeltir (e-posta biçimli eski adları temizler, bot isimlerine izin verir; bu kısıt yüzünden bahis sırasında profiles_username_format hatası geliyordu) ve sıralamayı canlı hale getirir. profit = gerçekleşen kâr + açık pozisyonların güncel orana göre değeri (mark-to-market); botlar oranı oynattıkça tablo değişir.
Çözüm cron'u (06:00 UTC, 09:00 TRT) bittiği anda lib/report.ts e-posta gönderir: cron'un o gece çözdüğü her market (sonuç, güven, gerekçe, ERKEN etiketi, kazanan/kaybeden), karar veremedikleri, hatalar, üretilen marketler, sonuç bekleyenler, 3 gün içinde kapanacaklar, kullanıcı bahisleri ve yorumları, bot yorum örnekleri, yeni kullanıcılar, bekleyen öneriler, canlı sıralama. Üstte "Dikkat" kutusu. Alıcılar REPORT_EMAILS (virgülle) yoksa ADMIN_EMAIL. Manuel: GET /api/cron/resolve?report=1 (sweep + rapor) veya GET /api/cron/report (sadece rapor).
Önerilen kurulum (Anthropic'siz): SERPER_API_KEY + LLM_BASE_URL/LLM_API_KEY (OpenRouter). Bu ikisi tanımlıysa market çözümü, erken tarama ve market üretimi Serper araması + LLM_MODEL_STRONG (varsayılan google/gemini-2.5-flash) ile yapılır; Anthropic hiç çağrılmaz. OpenRouter anahtarının haftalık harcama limiti doğal tavandır (0,80 $/hafta bile yeter). Serper: ayda ~300 arama, ücretsiz kotada.
LLM_* (OpenRouter, google/gemini-2.5-flash-lite, ~0,00005 $/yorum).ANTHROPIC_MODEL (varsayılan Haiku 4.5) + Anthropic web araması (arama başına 0,01 $).ANTHROPIC_MODEL_STRONG (varsayılan Sonnet 4.6). Hata burada pahalı çünkü ödeme dağıtılır; güven eşiği 0,95 ve sert kurallar (gelecekte açıklanacak veri asla erken çözülmez, "yılın en" tipi sorular dönem bitmeden çözülmez).EARLY_SCAN_DAYS, UTC gün numaraları, 0=Pazar). Tahmini günlük maliyet: 0,05-0,20 $; Pazartesi erken tarama +0,50 $.POST /api/admin/unsettle {market_id} + x-admin-secret.active → (ends_at geçti) → cron çözer → resolved (bahisler ödenir, resolution_note yazılır)
active → (ends_at geçti, karar verilemedi) → closed = "sonuç bekleniyor" (bahis alınmaz; ertesi gün tekrar denenir; admin elle çözebilir)
Tüm çözüm yolları (cron, admin paneli, /api/markets/settle) tek fonksiyondan geçer: lib/settle.ts. Bahis alma tamamen DB tarafında atomik: place_bet / place_bet_option RPC'leri.
app/(auth)/ login, register, forgot-password, reset-password
app/auth/callback Supabase e-posta linklerini oturuma çevirir (PKCE)
app/(app)/ markets, markets/[id], portfolio, leaderboard, profile, onboarding, suggest
app/admin/ dashboard (ops sağlığı), markets CRUD, öneriler, bahisler
app/api/ cron/resolve, cron/report, ai/generate, markets, markets/settle, bots/tick
lib/settle.ts tek çözüm/ödeme fonksiyonu
lib/resolve.ts günlük tarama (due + early + top-up)
lib/generate.ts Claude ile market üretimi + top-up
lib/notify.ts kazanç e-postaları
lib/badges.ts profil rozetleri (DB'siz, bahis geçmişinden hesaplanır)
components/ShareBar.tsx X / WhatsApp / Telegram / kopyala paylaşım şeridi
proxy.ts Supabase oturum yenileme (Next 16'da middleware'in adı)
npx tsc --noEmit && npm run build
npm run typecheck # tsc --noEmit
npm test # node --test (lib/json, lib/odds, lib/botVoice)
Admin server action'ları (app/admin/_actions.ts) herkese açık POST uç noktalarıdır; her biri requireAdmin() ile başlamalıdır (lib/adminAuth.ts). Secret karşılaştırmaları sabit zamanlıdır.