Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Knowhy Sınav Atölyesi

Modern, açık kaynaklı sınav ve soru bankası yönetim sistemi
Özellikler » · Mimari » · Kurulum » · Katkıda Bulunma »

License Node.js React TypeScript Prisma


� Ekran Görüntüleri

👨‍🏫 Eğitmen Paneli

Eğitmen Ana Sayfa

Eğitmen Sayfası

Derslerim

Eğitmen Derslerim

Sınav Yönetimi

Sınav Yönetimi

AI ile Sınav Oluşturma

AI Sınav Oluşturma

AI Öğrenci Analizi

AI Öğretmen Analizi

👨‍🎓 Öğrenci Paneli

Sınav Ekranı

Öğrenci Sınav

Sınav Çözümü

Sınav Çözümü

AI Performans Analizi

Öğrenci AI Analizi

AI Öğrenci Analizi

📊 Analiz & Yönetim

Analiz Sayfası

Analiz Sayfası

Ders Yönetimi

Ders Yönetimi


�📖 Hakkında

Knowhy Sınav Atölyesi, eğitim kurumları için tasarlanmış kapsamlı bir sınav ve soru bankası yönetim sistemidir. Öğretmenler soru bankası oluşturabilir, çeşitli soru tiplerinde sınavlar düzenleyebilir; öğrenciler sınavlara katılıp detaylı sonuçlarını görüntüleyebilir.

✨ Temel Özellikler

  • Çoklu Soru Tipleri: Çoktan seçmeli, doğru/yanlış, kısa cevap, eşleştirme
  • Akıllı Sınav Oluşturma: AI destekli otomatik soru üretimi (opsiyonel)
  • Detaylı Analitik: Öğrenci performans takibi, konu bazlı analiz
  • Rol Tabanlı Erişim: Admin, eğitmen ve öğrenci rolleri
  • Modern UI: Minimalist, beyaz tonlu tasarım sistemi
  • Responsive: Mobil uyumlu arayüz

🏗️ Mimari

Sistem Mimarisi

┌─────────────────────────────────────────────────────────────────────────────┐
│                              KNOWHY SINAV ATÖLYESİ                          │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐                   │
│  │   ADMIN     │     │  EĞİTMEN    │     │  ÖĞRENCİ    │                   │
│  │  Dashboard  │     │  Dashboard  │     │  Dashboard  │                   │
│  └──────┬──────┘     └──────┬──────┘     └──────┬──────┘                   │
│         │                   │                   │                          │
│         └───────────────────┼───────────────────┘                          │
│                             │                                              │
│                             ▼                                              │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │                     FRONTEND (React + TypeScript)                     │  │
│  │  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────────┐  │  │
│  │  │   Pages    │  │ Components │  │  Services  │  │  State (Zustand)│  │  │
│  │  └────────────┘  └────────────┘  └────────────┘  └────────────────┘  │  │
│  └──────────────────────────────────────────────────────────────────────┘  │
│                             │                                              │
│                             │ REST API                                     │
│                             ▼                                              │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │                    BACKEND (Node.js + Express)                        │  │
│  │  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────────┐  │  │
│  │  │   Routes   │  │ Middleware │  │   Auth     │  │   Validators   │  │  │
│  │  │  /exams    │  │   (JWT)    │  │  (Bcrypt)  │  │    (Zod)       │  │  │
│  │  │  /users    │  └────────────┘  └────────────┘  └────────────────┘  │  │
│  │  │  /analytics│                                                       │  │
│  │  │  /ai       │──────────────────────────────────────┐               │  │
│  │  └────────────┘                                      │               │  │
│  └──────────────────────────────────────────────────────│───────────────┘  │
│                             │                           │                  │
│                             ▼                           ▼                  │
│  ┌──────────────────────────────────────┐  ┌────────────────────────────┐  │
│  │         DATABASE (Prisma ORM)        │  │    AI SERVICE (Optional)   │  │
│  │  ┌────────────────────────────────┐  │  │  ┌──────────────────────┐  │  │
│  │  │  SQLite (Dev) / PostgreSQL     │  │  │  │   Make.com Webhook   │  │  │
│  │  │  ─────────────────────────     │  │  │  │         +            │  │  │
│  │  │  users, exams, questions,      │  │  │  │   Google Gemini AI   │  │  │
│  │  │  attempts, answers, tags...    │  │  │  └──────────────────────┘  │  │
│  │  └────────────────────────────────┘  │  └────────────────────────────┘  │
│  └──────────────────────────────────────┘                                  │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Veri Akışı

┌──────────────────────────────────────────────────────────────────────────────┐
│                           SINAV OLUŞTURMA AKIŞI                              │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────────┐   │
│  │ Eğitmen │───▶│ Soru Bankası│───▶│ Sınav       │───▶│ Öğrenci Ataması │   │
│  └─────────┘    │ Oluşturma   │    │ Oluşturma   │    └─────────────────┘   │
│                 └─────────────┘    └─────────────┘                          │
│                       │                  │                                   │
│                       ▼                  ▼                                   │
│              ┌─────────────────────────────────────┐                        │
│              │        SORU TİPLERİ                 │                        │
│              │  ┌─────────┐  ┌─────────┐          │                        │
│              │  │ MCQ     │  │ T/F     │          │                        │
│              │  │ Single  │  │ Doğru/  │          │                        │
│              │  │ Multi   │  │ Yanlış  │          │                        │
│              │  └─────────┘  └─────────┘          │                        │
│              │  ┌─────────┐  ┌─────────┐          │                        │
│              │  │ Short   │  │ Matching│          │                        │
│              │  │ Answer  │  │ Eşleşt. │          │                        │
│              │  └─────────┘  └─────────┘          │                        │
│              └─────────────────────────────────────┘                        │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────────────┐
│                            SINAV ALMA AKIŞI                                  │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────────┐   │
│  │ Öğrenci │───▶│ Sınav       │───▶│ Cevaplama   │───▶│ Otomatik        │   │
│  │         │    │ Başlatma    │    │ (Zamanlı)   │    │ Değerlendirme   │   │
│  └─────────┘    └─────────────┘    └─────────────┘    └────────┬────────┘   │
│                                                                 │            │
│                                                                 ▼            │
│                                          ┌─────────────────────────────────┐ │
│                                          │         SONUÇLAR                │ │
│                                          │  • Puan hesaplama               │ │
│                                          │  • Doğru/yanlış analizi         │ │
│                                          │  • Konu bazlı performans        │ │
│                                          │  • Zaman analizi                │ │
│                                          └─────────────────────────────────┘ │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

AI Entegrasyonu (Opsiyonel)

┌──────────────────────────────────────────────────────────────────────────────┐
│                        AI SINAV OLUŞTURMA AKIŞI                              │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────┐         ┌─────────────┐         ┌─────────────────────────┐    │
│  │ Eğitmen │────────▶│   Backend   │────────▶│     Make.com Webhook    │    │
│  │ İstek   │         │  /ai/exams  │         │                         │    │
│  └─────────┘         └─────────────┘         └───────────┬─────────────┘    │
│                                                          │                   │
│                                                          ▼                   │
│                                              ┌─────────────────────────┐    │
│                                              │    Google Gemini AI     │    │
│                                              │    (Soru Üretimi)       │    │
│                                              └───────────┬─────────────┘    │
│                                                          │                   │
│                                                          ▼                   │
│  ┌─────────┐         ┌─────────────┐         ┌─────────────────────────┐    │
│  │ Önizleme│◀────────│   Backend   │◀────────│    Callback Response    │    │
│  │ & Kaydet│         │  /callback  │         │    (JSON Sorular)       │    │
│  └─────────┘         └─────────────┘         └─────────────────────────┘    │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

🎯 Özellikler

👨‍🏫 Öğretmen/Eğitmen

  • Kapsamlı soru bankası yönetimi
  • Esnek sınav oluşturma ve düzenleme
  • Sürükle-bırak soru sıralama
  • Öğrenci performans analizi
  • Soru etiketleme ve kategorileme
  • Sınıf yönetimi
  • AI destekli otomatik sınav oluşturma

👨‍🎓 Öğrenci

  • Mevcut sınavları görüntüleme
  • Zamanlayıcılı sınav alma arayüzü
  • Detaylı sonuç ve geri bildirim görüntüleme
  • Kişisel performans takibi
  • Konu bazlı analiz

👨‍💼 Yönetici

  • Kullanıcı yönetimi
  • Sistem geneli analytics
  • Sağlık durumu izleme
  • Rol tabanlı erişim kontrolü
  • Eğitmen performans takibi

💻 Teknoloji Stack

Katman Teknolojiler
Backend Node.js, Express, TypeScript, Prisma ORM
Database SQLite (geliştirme), PostgreSQL (prodüksiyon)
Frontend React 18, TypeScript, Vite, TanStack Query
UI Tailwind CSS, shadcn/ui, Lucide Icons
State Zustand
Container Docker, Docker Compose
AI Make.com + Google Gemini (opsiyonel)

🚀 Kurulum

Gereksinimler

  • Node.js 18+
  • npm veya yarn
  • Docker (opsiyonel, prodüksiyon için)

Hızlı Başlangıç

  1. Projeyi klonlayın
git clone https://github.com/knowhycodata/knowhy-sinav-atolyesi.git
cd knowhy-sinav-atolyesi
  1. Backend kurulumu
cd backend
npm install
cp .env.example .env
# .env dosyasını düzenleyin (JWT_SECRET'ı değiştirin!)
npx prisma migrate dev
npx prisma generate
npm run seed  # Demo veriler için
npm run dev
  1. Frontend kurulumu (yeni terminal)
cd frontend
npm install
npm run dev
  1. Uygulamaya erişim

Demo Hesapları

Seed çalıştırıldıktan sonra:

Rol E-posta Şifre
Admin admin@example.com (.env dosyasında belirtilen)
Eğitmen instructor@example.com Test123!
Öğrenci student@example.com Test123!

Docker ile Kurulum

# Environment dosyasını hazırlayın
cp backend/.env.example .env
# .env dosyasında prodüksiyon değerlerini ayarlayın

# Docker Compose ile çalıştırın
docker-compose up -d

# Veritabanını başlatın
docker-compose exec backend npx prisma migrate deploy
docker-compose exec backend npm run seed

Yapılandırma

Environment Değişkenleri

backend/.env.example dosyasını referans alın:

# Server
PORT=4000
NODE_ENV=development

# Auth - Prodüksiyonda mutlaka değiştirin!
JWT_SECRET=your-secure-random-secret-min-32-chars

# Database
DATABASE_URL="file:./prisma/dev.db"

# AI Integration (Opsiyonel)
MAKE_WEBHOOK_URL=your-webhook-url

📁 Proje Yapısı

knowhy-sinav-atolyesi/
├── backend/                      # Node.js API server
│   ├── src/
│   │   ├── routes/              # API endpoints
│   │   │   ├── auth.ts          # Kimlik doğrulama
│   │   │   ├── users.ts         # Kullanıcı yönetimi
│   │   │   ├── exams.ts         # Sınav işlemleri
│   │   │   ├── questions.ts     # Soru bankası
│   │   │   ├── analytics.ts     # Analitik raporlar
│   │   │   ├── ai.ts            # AI sınav oluşturma
│   │   │   └── ai-analytics.ts  # AI performans analizi
│   │   ├── middleware/          # Express middleware
│   │   │   └── auth.ts          # JWT doğrulama
│   │   └── server/              # Server konfigürasyonu
│   ├── prisma/
│   │   ├── schema.prisma        # Veritabanı şeması
│   │   └── migrations/          # Migration dosyaları
│   └── Dockerfile
├── frontend/                     # React uygulaması
│   ├── src/
│   │   ├── pages/               # Sayfa bileşenleri
│   │   │   ├── admin/           # Admin sayfaları
│   │   │   ├── instructor/      # Eğitmen sayfaları
│   │   │   └── student/         # Öğrenci sayfaları
│   │   ├── components/          # Yeniden kullanılabilir UI
│   │   │   └── ui/              # shadcn/ui bileşenleri
│   │   ├── services/            # API servisleri
│   │   └── stores/              # Zustand state yönetimi
│   └── Dockerfile
├── makecom_sablonlari/          # Make.com AI şablonları
│   ├── README.md                # Kurulum kılavuzu
│   └── *.json                   # Blueprint dosyaları
├── docker-compose.yml           # Prodüksiyon deployment
├── CONTRIBUTING.md              # Katkıda bulunma rehberi
├── LICENSE                      # Apache 2.0 lisansı
└── README.md

🔐 Güvenlik

  • JWT token tabanlı kimlik doğrulama
  • Bcrypt ile şifre hashleme
  • Rol tabanlı erişim kontrolü (RBAC)
  • CORS koruması
  • SQL injection koruması (Prisma ORM)
  • Rate limiting

🤝 Katkıda Bulunma

Katkılarınızı memnuniyetle karşılıyoruz! Lütfen CONTRIBUTING.md dosyasını okuyun.

Geliştirme Süreci

  1. Projeyi fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Değişikliklerinizi commit edin (git commit -m 'feat: Add amazing feature')
  4. Branch'inizi push edin (git push origin feature/amazing-feature)
  5. Pull Request oluşturun

🤖 AI Entegrasyonu

AI destekli sınav oluşturma özelliğini kullanmak için:

  1. Make.com hesabı oluşturun
  2. makecom_sablonlari/ klasöründeki şablonları import edin
  3. Google Gemini API bağlantısı kurun
  4. Webhook URL'lerini .env dosyasına ekleyin

Detaylı kurulum için: makecom_sablonlari/README.md

📄 Lisans

Bu proje Apache License 2.0 altında lisanslanmıştır.

💬 Destek


Knowhy
"Bütün Ümidim Gençliktetir" - M.Kemal Atatürk
Made with ❤️ in Turkey

About

Ne dersin mühittin! Sence başarmış mıyızdır?

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages