| 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 |
📦 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
|
Backend
|
Frontend
|
- Node.js 18+
- Docker Desktop
- pnpm (
npm install -g pnpm)
# 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| 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! |
Soru Tipleri
- Tek Seçim - Radio button
- Çoklu Seçim - Checkbox
- Doğru/Yanlış - Boolean
- Boşluk Doldurma - Text input
- 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-Browserheader kontrolü- Exam key doğrulama
| 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 |
- ✅ 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
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
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# API testleri
cd apps/api
pnpm test
# Prisma Studio
pnpm prisma studioMIT License - Detaylar için LICENSE dosyasına bakın.