Skip to content

pnarkz/lms

Repository files navigation

🎓 LMS - Learning Management System

Next.js Express TypeScript PostgreSQL React Native

Kapsamlı bir Öğrenim Yönetim Sistemi

DemoKurulumÖzelliklerAPI


✨ Öne Çıkan Özellikler

Modül Özellikler
🔐 Kimlik Doğrulama JWT, Google OAuth, 2FA (TOTP), CSRF koruması
📚 Ders Yönetimi Modüller, PDF/Video içerik, H5P etkileşimli içerik
📝 Sınav Sistemi 5 soru tipi, zamanlayıcı, SEB entegrasyonu, soru bankası
📊 Değerlendirme Gradebook, rubrik puanlama, rastgele sorular
🎥 Canlı Ders Jitsi Meet, BigBlueButton entegrasyonu
📱 Mobil Uygulama React Native (Expo), 3 dil desteği
🔔 Bildirimler Push notification, e-posta, webhook
📦 Entegrasyonlar SCORM, xAPI, QTI, LTI, H5P

🏗️ Proje Mimarisi

📦 LMS/
├── 📂 apps/
│   ├── 🔧 api/          # Express + Prisma Backend (Port: 4000)
│   ├── 🌐 web/          # Next.js Web Uygulaması (Port: 3000)
│   ├── 📱 mobile/       # Expo React Native App
│   └── 🖥️ desktop/      # Electron Desktop App
├── 🐳 docker-compose.yml
└── 📄 README.md

Teknoloji Yığını

Backend

  • Node.js + Express + TypeScript
  • Prisma ORM + PostgreSQL
  • JWT Authentication
  • Zod validation
  • Rate limiting & Helmet

Frontend

  • Next.js 14 (App Router)
  • TypeScript + Tailwind CSS
  • PWA desteği
  • Dark/Light tema
  • TR/EN dil desteği

🚀 Kurulum

Gereksinimler

  • Node.js 18+
  • Docker Desktop
  • pnpm (npm install -g pnpm)

Hızlı Başlangıç

# 1. Repoyu klonla
git clone https://github.com/pnarkz/lms.git
cd lms

# 2. Environment dosyasını oluştur
cp .env.example .env

# 3. PostgreSQL'i başlat
docker compose up -d

# 4. Bağımlılıkları yükle
pnpm install

# 5. Veritabanını başlat
cd apps/api
pnpm prisma migrate dev
pnpm prisma db seed
cd ../..

# 6. Servisleri başlat
pnpm api   # Terminal 1 - http://localhost:4000
pnpm web   # Terminal 2 - http://localhost:3000

👤 Demo Kullanıcılar

Rol E-posta Şifre
🔴 Super Admin superadmin@demo.com Demo123!
🟠 Admin admin@demo.com Demo123!
🟢 Instructor instructor@demo.com Demo123!
🔵 Student student@demo.com Demo123!
⚪ Guest guest@demo.com Demo123!

📋 Özellikler

📝 Sınav Sistemi

Soru Tipleri
  1. Tek Seçim - Radio button
  2. Çoklu Seçim - Checkbox
  3. Doğru/Yanlış - Boolean
  4. Boşluk Doldurma - Text input
  5. Kısa Cevap - Manuel puanlama
Soru Bankası
# Soru bankası oluştur
POST /api/courses/:courseId/banks
{ "name": "Matematik Soruları", "description": "Temel matematik" }

# Rastgele soru çek
PATCH /api/quizzes/:id
{
  "useQuestionBank": true,
  "questionBankId": "bank-uuid",
  "randomQuestionCount": 10,
  "shuffleQuestions": true
}
SEB Entegrasyonu
  • Safe Exam Browser config dosyası oluşturma
  • X-Safe-Exam-Browser header kontrolü
  • Exam key doğrulama

🎥 Canlı Ders & Entegrasyonlar

Entegrasyon Durum Açıklama
Jitsi Meet ✅ Çalışıyor /api/integrations/jitsi/create
BigBlueButton ✅ Çalışıyor /api/bbb/meetings
SCORM ✅ Çalışıyor /api/scorm/upload
H5P ✅ Çalışıyor /api/h5p/upload
xAPI ✅ Çalışıyor LRS yapılandırması gerekli
QTI ✅ Çalışıyor Import/Export desteği

🔒 Güvenlik

  • ✅ JWT Access/Refresh Token
  • ✅ Bcrypt password hashing
  • ✅ CSRF protection (Double-submit cookie)
  • ✅ XSS protection (Request sanitization)
  • ✅ CSP headers (Strict policy)
  • ✅ Rate limiting
  • ✅ Helmet security headers

📡 API Endpoints

Auth
POST /api/auth/register
POST /api/auth/login
POST /api/auth/refresh
POST /api/auth/logout
GET  /api/auth/me
POST /api/auth/google
POST /api/auth/2fa/setup
POST /api/auth/2fa/verify
Courses & Modules
GET    /api/courses
POST   /api/courses
GET    /api/courses/:id
PATCH  /api/courses/:id
DELETE /api/courses/:id
POST   /api/courses/:id/enroll
GET    /api/courses/:id/gradebook

POST   /api/modules
GET    /api/modules/:id
POST   /api/modules/:id/contents
Quizzes & Attempts
POST /api/quizzes
GET  /api/quizzes/:id
POST /api/quizzes/:id/questions
GET  /api/quizzes/:id/seb-config
GET  /api/quizzes/:id/results

POST /api/attempts/start/:quizId
POST /api/attempts/:id/submit
GET  /api/attempts/:id
Integrations
POST /api/integrations/jitsi/create
POST /api/integrations/qti/import
GET  /api/integrations/qti/export/:quizId
GET  /api/integrations/status

POST /api/bbb/meetings
GET  /api/bbb/meetings/:id/join

POST /api/h5p/upload
GET  /api/h5p/:id
POST /api/h5p/:id/xapi

📱 Mobil Uygulama

Expo React Native ile geliştirilmiş mobil uygulama:

  • ✅ 3 dil desteği (TR/EN/DE)
  • ✅ Quiz timer + auto-submit
  • ✅ Offline içerik görüntüleme
  • ✅ Push notifications
  • ✅ Biometric login
cd apps/mobile
pnpm start

🧪 Test

# API testleri
cd apps/api
pnpm test

# Prisma Studio
pnpm prisma studio

📄 Lisans

MIT License - Detaylar için LICENSE dosyasına bakın.


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors