No description
  • JavaScript 44%
  • PHP 37.7%
  • Hack 18%
  • CSS 0.3%
Find a file
2025-07-21 02:27:50 +03:00
Api Refactor code style for consistency and readability across multiple files. Update HTML structure in index.php, enhance PHP method formatting in various controllers, and clean up JavaScript event handling. Improve overall code quality and maintainability. 2025-06-29 16:57:47 +03:00
assets Refactor CSS styles for improved readability and consistency. Adjust indentation in animation keyframes and button styles to enhance code clarity. 2025-07-21 02:27:50 +03:00
.gitignore Refactor friends functionality to improve API integration and UI interactions. Update FriendsController to manage friend requests and enhance search capabilities. Modify app.js and ui-handler.js for better handling of friend-related actions, ensuring a smoother user experience. 2025-06-29 15:39:36 +03:00
api.php Add shop functionality to the game, allowing users to purchase lifelines using in-game currency. Integrate ShopController into the API and update the user interface to include a shop tab. Enhance user experience by enabling lifeline purchases and updating session management for lifelines. 2025-06-29 16:49:17 +03:00
config.php Implement database connection and score management in api.php. Add functionality to update user scores and retrieve leaderboard data. Enhance error handling for database connection issues. Update config.php with database connection settings. 2025-06-29 13:07:12 +03:00
GELECEK-IYILESTIRMELER.md Update user management features by implementing daily login rewards and enhancing user statistics tracking. Modify UserController to include login streak and last login date, and adjust the installation script to accommodate new database fields. Update frontend to display daily reward notifications, improving user engagement and experience. 2025-06-29 16:54:10 +03:00
GeminiAPI.php Refactor code for improved readability and structure; updated API response handling in index.php, enhanced prompt format for Gemini API, and added detailed project documentation in README.md. 2025-06-29 12:34:00 +03:00
index.php Refactor code style for consistency and readability across multiple files. Update HTML structure in index.php, enhance PHP method formatting in various controllers, and clean up JavaScript event handling. Improve overall code quality and maintainability. 2025-06-29 16:57:47 +03:00
install.php Update user management features by implementing daily login rewards and enhancing user statistics tracking. Modify UserController to include login streak and last login date, and adjust the installation script to accommodate new database fields. Update frontend to display daily reward notifications, improving user engagement and experience. 2025-06-29 16:54:10 +03:00
README.md Refactor code style for consistency and readability across multiple files. Update HTML structure in index.php, enhance PHP method formatting in various controllers, and clean up JavaScript event handling. Improve overall code quality and maintainability. 2025-06-29 16:57:47 +03:00

AI Bilgi Yarışması (Veritabanı & Kullanıcı Sistemi)

Bu proje, Google Gemini API'sini kullanarak çeşitli kategorilerde ve zorluk seviyelerinde dinamik olarak bilgi yarışması soruları oluşturan, çok kullanıcılı, veritabanı destekli bir "Tek Sayfa Uygulaması"dır (SPA).

Özellikler

  • Yönetici Paneli (Admin Panel): Admin rolüne sahip kullanıcılar için özel bir arayüz.
    • Kullanıcı Yönetimi: Kullanıcıları listeleme, rol değiştirme ve silme.
    • Genel İstatistikler: Toplam kullanıcı sayısı ve cevaplanan soru sayısı gibi temel metrikler.
    • Gelişmiş İstatistik Grafikleri: En çok oynanan kategoriler, yeni kullanıcı kayıtları ve cevap başarı oranları gibi verilerin Chart.js ile görselleştirilmesi.
    • Duyuru Sistemi: Tüm kullanıcılara veya belirli gruplara (admin/user) yönelik uygulama içi duyurular oluşturma, listeleme ve yönetme.
  • Arkadaşlık Sistemi: Kullanıcılar birbirlerini arkadaş olarak ekleyebilir, istek gönderip alabilir ve arkadaşlarını listeleyebilir.
  • Meydan Okuma (Düello) Modu: Kullanıcılar arkadaşlarına belirli bir kategori ve zorlukta 5 soruluk düellolar için meydan okuyabilir.
  • Günlük Görevler: Kullanıcıların her gün tamamlayarak ekstra puan kazanabileceği "5 tarih sorusu çöz" gibi dinamik olarak atanan görevler.
  • Avatar ve Özelleştirme: Kullanıcılar, profillerini kişiselleştirmek için kendilerine sunulan çeşitli avatarlardan birini seçebilirler. Seçilen avatar, uygulama genelinde (arkadaş listesi, liderlik tablosu vb.) gösterilir.
  • Kullanıcı Kayıt ve Giriş Sistemi: Güvenli password_hash ile şifreleme ve PHP session yönetimi sayesinde kullanıcılar kendi hesaplarını oluşturabilir.
  • Veritabanı Entegrasyonu: Tüm kullanıcı verileri, kişisel istatistikler ve puanlar MySQL veritabanında saklanır.
  • Kişiye Özel İstatistikler: Her kullanıcının her kategorideki performansı (toplam soru, doğru cevap, başarı oranı) veritabanında tutulur ve kendi profilinde gösterilir.
  • Dinamik Liderlik Tablosu: Kullanıcıların aldıkları puanlara göre sıralandığı ve periyodik olarak güncellenen bir liderlik tablosu bulunur.
  • Joker Sistemi: Oyunculara stratejik avantaj sağlayan "%50 Eleme" ve "Ekstra Süre" jokerleri.
  • Gelişmiş Başarım Sistemi: "Seri Galibi", "Hız Tutkunu", "Gece Kuşu", "Kategori Uzmanı" gibi çeşitli oyun tarzlarını ödüllendiren 20'den fazla rozet.
  • Günlük Giriş Ödülleri: Kullanıcıları her gün giriş yapmaya teşvik eden, ardışık girişlerde artan miktarda jeton veren bir ödül sistemi.
  • Dinamik Soru Üretimi: Google Gemini API'si ile her seferinde özgün sorular oluşturulur.
  • Tek Sayfa Uygulaması (SPA): fetch API'si ve AJAX sayesinde sayfa yenilenmeden akıcı bir kullanıcı deneyimi sunar.
  • Çoklu Soru Tipi: Çoktan seçmeli ve Doğru/Yanlış formatlarında rastgele sorular sunarak yarışmayı dinamik tutar.
  • Çoklu Kategori ve Zorluk: Çeşitli kategorilerde "Kolay", "Orta" ve "Zor" seviyelerinde yarışma imkanı.
  • ık/Koyu Tema: Kullanıcının tercihine veya sistem ayarlarına göre değişen modern ve göz dostu arayüz.
  • Duyarlı Tasarım: Tailwind CSS ile oluşturulmuş modern ve mobil uyumlu arayüz.
  • Oyun İçi Para Birimi ve Mağaza:
    • Kullanıcılar doğru cevaplardan, görevlerden ve düellolardan "jeton" kazanır.
    • Kazandıkları jetonları, joker gibi oyun içi avantajlar satın almak için "Mağaza"da harcayabilirler.
    • Joker sayıları veritabanında kalıcı olarak saklanır.

Kullanılan Teknolojiler

  • Backend: PHP, MySQL
  • Frontend: HTML, Tailwind CSS, JavaScript (ES6+)
  • API İletişimi: AJAX (fetch API)
  • AI Model: Google Gemini Pro
  • Oturum Yönetimi: PHP Sessions ($_SESSION)

Kurulum ve Çalıştırma

Projeyi yerel makinenizde veya bir web sunucusunda çalıştırmak için aşağıdaki adımları izleyin:

  1. Projeyi Klonlayın:

    git clone https://github.com/hermesthecat/Gemini-Api-Soru-Cevap.git
    cd Gemini-Api-Soru-Cevap
    
  2. config.php Dosyasını Oluşturun:

    • Proje kök dizininde config.php adında bir dosya oluşturun. Bu dosya hem veritabanı bağlantı bilgilerinizi hem de API anahtarınızı içerecektir.
    <?php
    // Veritabanı Ayarları
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root'); // Veritabanı kullanıcı adınız
    define('DB_PASS', '');     // Veritabanı şifreniz
    define('DB_NAME', 'ai_quiz'); // Kullanmak istediğiniz veritabanı adı
    
    // Google Gemini API Anahtarı
    // https://aistudio.google.com/app/apikey adresinden alabilirsiniz.
    define('GEMINI_API_KEY', 'SIZIN_API_ANAHTARINIZ');
    
  3. Veritabanını ve Tabloları Kurun:

    • Tarayıcınızdan http://localhost/proje-klasoru/install.php adresini çalıştırın.
    • Bu betik, config.php'de belirttiğiniz isimde veritabanını, gerekli tüm tabloları (users, friends, duels, leaderboard, user_stats, achievements, user_achievements, quests, user_quests, announcements, user_announcements) ve varsayılan bir yönetici hesabını (kullanıcı adı: admin, şifre: password) otomatik olarak oluşturacaktır.
  4. Uygulamayı Başlatın:

    • install.php'yi çalıştırdıktan sonra tarayıcınızdan ana dizine (http://localhost/proje-klasoru/) gidin.
    • Artık yeni bir kullanıcı kaydedebilir veya admin hesabıyla giriş yapabilirsiniz.

Dosya Yapısı

.
├── Api/
│   └── Controllers/      # Backend Controller sınıfları
│       ├── AdminController.php
│       ├── DataController.php
│       ├── DuelController.php
│       ├── FriendsController.php
│       ├── GameController.php
│       ├── QuestController.php
│       ├── ShopController.php
│       └── UserController.php
├── assets/
│   ├── css/style.css
│   ├── images/
│   │   └── avatars/      # Kullanıcı avatar dosyaları
│   └── js/               # Modüler JavaScript dosyaları
│       ├── admin-handler.js
│       ├── announcement-handler.js
│       ├── api-handler.js
│       ├── app-data.js
│       ├── app-state.js
│       ├── app.js
│       ├── auth-handler.js
│       ├── friends-handler.js
│       ├── game-handler.js
│       ├── quest-handler.js
│       ├── settings-handler.js
│       ├── shop-handler.js
│       ├── stats-handler.js
│       └── ui-handler.js
├── api.php             # Ana API yönlendiricisi (Router)
├── config.php          # Veritabanı ve API anahtarı yapılandırması
├── GeminiAPI.php       # Google Gemini API ile iletişim sınıfı
├── index.php           # Ana HTML iskeleti ve UI konteynerları
├── install.php         # Veritabanı kurulum betiği
└── README.md           # Bu dosya

Nasıl Çalışır?

Uygulama, modern bir SPA mimarisiyle çalışır:

  1. Başlatma: Kullanıcı index.php'yi açtığında, app.js çalışır ve api.php'ye bir check_session isteği göndererek aktif bir oturum olup olmadığını kontrol eder.
  2. Oturum Yönetimi:
    • Oturum Varsa: api.php kullanıcı bilgilerini (id, username, role) döndürür.
      • Kullanıcı 'admin' ise: Frontend, Yönetim Panelini (admin-view) gösterir. Panel için gerekli veriler (kullanıcı listesi, genel istatistikler) API'den çekilir.
      • Kullanıcı 'user' ise: Frontend, ana uygulama ekranını (main-view) gösterir, kullanıcıyı karşılar ve verileri (kişisel istatistikler, liderlik tablosu) yükler.
    • Oturum Yoksa: Frontend, giriş/kayıt formlarının olduğu auth-view'ı gösterir.
  3. Admin İşlemleri: Admin, panel üzerinden bir kullanıcının rolünü değiştirdiğinde veya bir kullanıcıyı sildiğinde, app.js ilgili admin_* endpoint'ini çağırır ve başarılı olursa arayüzü günceller.
  4. Sosyal Etkileşim: Kullanıcılar "Arkadaşlar" sekmesinden diğer kullanıcıları arayabilir, istek gönderebilir, gelen istekleri yönetebilir. Arkadaşlarına meydan okuma isteği gönderebilirler. Backend'de bu işlemler FriendsController ve DuelController tarafından yönetilir.
  5. Oyun Akışı: (Normal kullanıcılar veya admin "Oyuncu Görünümü"ne geçtiğinde)
    • Kullanıcı bir kategori seçer ve api.php'nin get_question endpoint'inden bir soru istenir.
    • api.php, Gemini'den soruyu alır, doğru cevabı ve açıklamayı sunucu tarafında $_SESSION'a kaydeder ve sadece soruyu/seçenekleri ön uca gönderir.
    • Kullanıcı cevabını submit_answer endpoint'ine gönderir.
    • api.php, cevabı $_SESSION'daki doğru cevapla karşılaştırır, puanı hesaplar ve kullanıcının user_stats ve leaderboard tablolarındaki verilerini günceller.
  6. Arayüz Güncelleme: Ön uç, cevabın sonucunu (doğru/yanlış, ıklama) alır, arayüzü günceller ve en güncel istatistik/liderlik tablosu verilerini ekrana yansıtır.

Lisans

Bu proje MIT Lisansı altında lisanslanmıştır.