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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.