ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Kelime havuzu oluşturup diğerleriyle düello oynayarak YÖKDİL Fen sınavına hazırlan
Translation pending
AI summary · website and README
EducationJavaScript · HTMLGitHub @siraybOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
İki kişilik, ortak kelime havuzlu ve düello modlu YÖKDİL Fen kelime çalışma uygulaması. Saf HTML/CSS/JS (build adımı yok), veri katmanı Supabase. Neden Supabase: kelime havuzu + düello + liderlik tablosu ilişkisel veri (kullanıcılar, kelimeler, düello sonuçları arasında join/aggregate gerekiyor), bu da SQL'e NoSQL'den daha uygun. Ücretsiz planı 2 kişilik kullanım için fazlasıyla yeterli, sunucu kurmaya gerek yok.Read the full README ↗
İki kişilik, ortak kelime havuzlu ve düello modlu YÖKDİL Fen kelime çalışma uygulaması. Saf HTML/CSS/JS (build adımı yok), veri katmanı Supabase.
index.html Sayfa iskeleti, tüm sekmeler
css/styles.css Tema (light/dark), tüm görsel stiller
js/config.js Supabase config sabitleri + localStorage okuma/yazma (kimlik, tema)
js/supabaseClient.js Supabase client oluşturma
js/identity.js Cihaz bazlı kullanıcı kimliği (auth yok)
js/api.js Tüm veritabanı sorguları (words, duels, leaderboard...)
js/wordUtils.js Kelime alanı normalizasyonu (küçük harf, virgüllü eş anlam eşleşmesi)
js/app.js Bootstrap, sekme yönlendirme
js/modules/*.js Her sekme için ayrı modül (home, addWord, pool, training, duel, leaderboard, connection)
supabase/schema.sql Supabase'de çalıştırılacak tablo şeması
Neden Supabase: kelime havuzu + düello + liderlik tablosu ilişkisel veri (kullanıcılar, kelimeler, düello sonuçları arasında join/aggregate gerekiyor), bu da SQL'e NoSQL'den daha uygun. Ücretsiz planı 2 kişilik kullanım için fazlasıyla yeterli, sunucu kurmaya gerek yok.
supabase/schema.sql dosyasının tamamını yapıştırıp çalıştır. Bu, gerekli tabloları (users, words, weak_words, duels, duel_participants, duel_answers) ve erişim izinlerini kurar.Project URL ve anon public key değerlerini kopyala.
schema.sqlidempotent yazıldı (if not exists/add column if not exists) — proje zaten kuruluysa dosyayı tekrar SQL Editor'de çalıştırmak güvenlidir, sadece eksik kolon/tabloları ekler. Canlı düello özelliği eklendiğinde bu dosya güncellendi; mevcut bir projeyi güncellemek için dosyayı tekrar çalıştırman yeterli.
Supabase URL + anon key, js/config.js içinde sabit değer olarak tutuluyor — kullanıcıdan istenmiyor. anon key herkese açık kullanılmak üzere tasarlanmıştır (erişim RLS politikalarıyla korunur), koda gömülü olması güvenlik açığı değildir. Gerçek gizli anahtar service_role key'i asla client koduna konmamalı — bu projede zaten kullanılmıyor.
İlk açılışta sadece görünen ad sorulur, bu da o cihazın tarayıcısında localStorage'da saklanır ve bir daha sorulmaz. "Bağlantı" sekmesinden bu kimlik cihazdan silinebilir (tekrar ad girmek gerekir).
Aynı ismi başka bir cihazda (örn. telefonda) da girersen yeni bir kullanıcı açılmaz — sistem users tablosunda aynı isimde kayıtlı biri olup olmadığına bakar, varsa o kimliği bu cihaza da bağlar. Böylece aynı kişi birden fazla cihazdan aynı hesapla (aynı istatistik/kelime geçmişiyle) girebilir. İsimler birbirinden ayırt edilsin diye iki farklı kişi aynı ismi kullanmamalı.
Kendi Supabase projeni kullanmak istersen (örn. farklı bir kopya kurarsan), js/config.js en üstündeki SUPABASE_URL ve SUPABASE_ANON_KEY sabitlerini kendi değerlerinle değiştirmen yeterli — build adımı yok, direkt dosyayı düzenleyip deploy edersin.
Node.js kurulu olmalı (npx için).
npm run dev
veya doğrudan:
npx serve . -l 3000
Sonra tarayıcıda http://localhost:3000 aç. İlk açılışta sadece adını gireceksin.
yokdilfen.vercel.app) her iki arkadaşta da açılır. Her push'ta otomatik güncellenir.Düelloyu oluşturan "bekleme odası"na girer (duels.live_status='waiting'). Rakip Savaş sekmesinde "Katılabileceğin Canlı Düellolar" listesinden katılınca (live_status='active', ortak bir current_question_started_at zaman damgası) ikisi de aynı anda aynı soruyu görür. Her cevap sunucu zaman damgasıyla duel_answers tablosuna yazılır (Supabase Realtime ile karşı tarafa anında yansır). Her sorunun sabit bir süresi vardır (8/12/20sn); biri doğru cevaplar cevaplamaz o an soru herkes için ilerler (rakip cevap veremeden geçilir, bu yüzden ceza almaz) — kimse doğru bilemezse tam süre dolunca ilerler. Sayfa yenilenirse (current_question_index, geçmiş duel_answers satırları üzerinden) kaldığı yerden devam eder.
"Karma" yönde her sorunun TR→EN mi EN→TR mi olacağı soru sırasına göre deterministiktir (index çift/tek), böylece iki oyuncu da aynı soruyu aynı yönde görür.
Uygulama başta hem "kendi zamanında" hem "canlı" iki ayrı düello modu ile kuruldu, ama "kendi zamanında" mod kullanışsız bulunup kaldırıldı — artık tek mod var: canlı.
HP/eleme yok, düz puan sistemi: doğru cevap +15, aktif olarak yanlış cevap gönderme -5, süre dolup hiç cevap verilmezse (ne kendisi ne rakip bilemezse) 0 puan, ceza yok. Hız bonusu ya da seri çarpanı uygulanmaz; "en uzun seri" istatistiği yine de ayrıca tutulur.
Tamamlanmış düello katılımları (duel_participants) üzerinden kullanıcı bazında toplanır: toplam puan (asıl sıralama kriteri), kazanılan düello sayısı (bir düello bitince skoru yüksek olan duels.winner_id olarak yazılır, eşitlikte kimse kazanmaz — eşit toplam puanda ikinci sıralama kriteri), doğru/yanlış toplamı, en uzun seri maksimumu, maç sayısı.
kötüleşmek, bozulmak). Düelloda bunlardan sadece birini doğru yazmak yeterlidir. Kelime/anlam alanları kaydedilirken otomatik küçük harfe çevrilir (örnek cümle etkilenmez), böylece büyük/küçük harf farkı eşleşmeyi bozmaz.-, :, | ya da tab (Excel/Sheets'ten kopyalayınca otomatik) ile ayrılır; aynı ayraçla üçüncü bir parça verilirse örnek cümle olarak alınır. Örnek: run - koşmak veya deteriorate - kötüleşmek, bozulmak - Their health deteriorated quickly.. Ayraç bulunamayan satırlar atlanır, kaç satırın eklenip kaçının atlandığı işlem sonunda gösterilir.