Skip to content

Knowhy LMS

Modern, Hafif ve Kapsamlı Öğrenme Yönetim Sistemi

License TypeScript React Node.js PostgreSQL Docker

ÖzelliklerKurulumEkran GörüntüleriMimariAPIKatkıda Bulunun


Hakkında

Knowhy LMS, şirket içi eğitim ihtiyaçlarını karşılamak için tasarlanmış, modern ve hafif bir Öğrenme Yönetim Sistemidir. Hibrit video sistemi sayesinde hem yerel sunucuda barındırılan hassas eğitim videolarını hem de YouTube üzerindeki içerikleri tek bir platformda yönetebilirsiniz.

┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│   📚 Kurslar    →    📦 Modüller    →    🎬 Dersler             │
│                                                                  │
│   ┌─────────┐       ┌─────────┐       ┌─────────────────────┐   │
│   │ React   │  ←→   │ Node.js │  ←→   │    PostgreSQL       │   │
│   │ Vite    │       │ Express │       │    + Prisma ORM     │   │
│   └─────────┘       └─────────┘       └─────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

✨ Özellikler

Kurs Yönetimi

  • Hiyerarşik Yapı: Kurslar → Modüller → Dersler şeklinde organize içerik
  • Sürükle-Bırak Sıralama: Modül ve ders sıralamasını kolayca değiştirin
  • Taslak/Yayın Modu: Kursları hazır olana kadar taslak olarak tutun
  • Thumbnail Desteği: Kurs ve ders kapak görselleri

Hibrit Video Sistemi

┌────────────────────────────────────────────────────────────┐
│                    VIDEO TİPLERİ                           │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  📁 LOKAL VİDEO                  🎬 YOUTUBE EMBED          │
│  ─────────────                   ─────────────────         │
│  • Sunucuda barındırılır         • YouTube ID ile embed    │
│  • Range streaming               • YouTube Player API      │
│  • Hassas içerikler için         • Bant genişliği tasarrufu│
│  • Tam kontrol                   • Otomatik kalite ayarı   │
│                                                            │
└────────────────────────────────────────────────────────────┘

İlerleme Takibi

  • Otomatik Kayıt: Her 15 saniyede bir izleme pozisyonu kaydedilir
  • Kaldığı Yerden Devam: Video kaldığı yerden otomatik başlar
  • Tamamlama Durumu: Ders ve kurs bazında tamamlama yüzdeleri
  • Toplam İzleme Süresi: Kullanıcı bazında toplam çalışma süresi

Kullanıcı Yönetimi

Rol Yetkiler
Admin Tüm sistem yönetimi, kullanıcı onayı, raporlar
Eğitmen Kurs oluşturma, düzenleme, öğrenci takibi
Öğrenci Kurslara kayıt, video izleme, yorum yapma

Etkileşim

  • Zaman Damgalı Yorumlar: Videonun belirli anlarına yorum yapın
  • Yanıt Sistemi: Yorumlara yanıt verin, tartışmalar başlatın
  • Dosya Ekleri: Derslere PDF, DOCX gibi dokümanlar ekleyin

Analitik & Raporlar

  • Departman Bazlı Raporlar: Hangi departman ne kadar eğitim aldı?
  • Kurs Tamamlama Oranları: Kurs bazında başarı metrikleri
  • Kullanıcı İstatistikleri: Bireysel ilerleme takibi
  • Excel Export: Raporları dışa aktarın

Güvenlik

  • JWT Tabanlı Auth: Access + Refresh token sistemi
  • Rol Bazlı Erişim (RBAC): Endpoint bazında yetkilendirme
  • Şifre Hashleme: bcrypt ile güvenli şifre saklama
  • Kullanıcı Onay Sistemi: Admin onayı ile kayıt

🛠 Teknoloji Yığını

Backend

  • Runtime: Node.js 20+
  • Framework: Express.js
  • Dil: TypeScript
  • ORM: Prisma
  • Veritabanı: PostgreSQL

Frontend

  • Framework: React 18
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • UI Kit: shadcn/ui
  • Icons: Lucide React

Altyapı

  • Container: Docker
  • Orchestration: Docker Compose
  • Proxy: Nginx
  • Storage: Local Volume

📸 Ekran Görüntüleri

Aşağıdaki ekran görüntüleri platform/ klasöründen alınmıştır.

Giriş

Giriş ekranı

Öğrenci Paneli

Öğrenci ekranı

Öğrenci Ders Ekranı

Öğrenci ders ekranı

Öğrenci Profili

Öğrenci profili

Eğitmen: Kurs Ekleme (1)

Eğitmen kurs ekleme 1

Eğitmen: Kurs Ekleme (2)

Eğitmen kurs ekleme 2

Eğitmen: Öğrenci Yönetimi

Eğitmen öğrenci yönetimi

Admin Ana Ekran

Admin ekranı

Admin: Yönetim Paneli

Admin yönetim paneli

Admin: Kullanıcı Yönetimi

Admin kullanıcı yönetimi

Admin: Raporlar

Admin raporlar ekranı

Admin: Ayarlar

Admin ayarlar ekranı

🚀 Kurulum

Gereksinimler

  • Node.js 20 veya üzeri
  • Docker & Docker Compose
  • Git

Hızlı Başlangıç (Docker)

# 1. Projeyi klonlayın
git clone https://github.com/knowhycodata/knowhy-lms.git
cd knowhy-lms

# 2. Environment dosyasını oluşturun
cp backend/.env.example backend/.env

# 3. Docker ile başlatın
docker-compose up -d

# 4. Veritabanı migration'ları çalıştırın
docker-compose exec backend npx prisma migrate deploy

# 5. (Opsiyonel) Örnek veri yükleyin
docker-compose exec backend npx prisma db seed

Uygulama şu adreslerde çalışacaktır:

Geliştirme Ortamı

# Backend kurulumu
cd backend
npm install
cp .env.example .env
npx prisma generate
npx prisma migrate dev
npm run dev

# Frontend kurulumu (yeni terminal)
cd frontend
npm install
npm run dev

Environment Değişkenleri

# backend/.env
DATABASE_URL="postgresql://user:password@localhost:5432/knowhy_lms"
JWT_SECRET="your-super-secret-jwt-key"
JWT_REFRESH_SECRET="your-refresh-token-secret"
PORT=3000
NODE_ENV=development

🏗 Mimari

Sistem Akışı

┌─────────────────────────────────────────────────────────────────────────┐
│                           KNOWHY LMS MİMARİSİ                            │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│     ┌─────────┐         ┌─────────┐         ┌─────────┐                │
│     │ Admin   │         │Eğitmen  │         │ Öğrenci │                │
│     └────┬────┘         └────┬────┘         └────┬────┘                │
│          │                   │                   │                      │
│          └───────────────────┼───────────────────┘                      │
│                              │                                          │
│                              ▼                                          │
│  ┌───────────────────────────────────────────────────────────────────┐ │
│  │                     FRONTEND (React + Vite)                        │ │
│  │                                                                    │ │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐          │ │
│  │  │  Pages   │  │Components│  │  Hooks   │  │ Services │          │ │
│  │  └──────────┘  └──────────┘  └──────────┘  └──────────┘          │ │
│  │                                                                    │ │
│  │  Tailwind CSS + shadcn/ui + Lucide Icons                          │ │
│  └───────────────────────────────────────────────────────────────────┘ │
│                              │                                          │
│                              │ REST API (HTTP/JSON)                     │
│                              ▼                                          │
│  ┌───────────────────────────────────────────────────────────────────┐ │
│  │                    BACKEND (Node.js + Express)                     │ │
│  │                                                                    │ │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐          │ │
│  │  │  Routes  │→ │Middleware│→ │Controller│→ │ Services │          │ │
│  │  └──────────┘  └──────────┘  └──────────┘  └──────────┘          │ │
│  │                                                                    │ │
│  │  JWT Auth + RBAC + Validation + Error Handling                    │ │
│  └───────────────────────────────────────────────────────────────────┘ │
│                              │                                          │
│          ┌───────────────────┼───────────────────┐                      │
│          │                   │                   │                      │
│          ▼                   ▼                   ▼                      │
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐               │
│  │  PostgreSQL  │   │ File System  │   │   YouTube    │               │
│  │   (Prisma)   │   │   (Videos)   │   │  (External)  │               │
│  └──────────────┘   └──────────────┘   └──────────────┘               │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

Veritabanı Şeması

User ─────────────────┬─────────────────────────────────────┐
  │                   │                                     │
  │ 1:N               │ 1:N                                 │ 1:N
  ▼                   ▼                                     ▼
Course ──────► Module ──────► Lesson ◄────── Progress ◄─────┘
  │                              │
  │ 1:N                          │ 1:N
  ▼                              ▼
Enrollment                    Comment ◄──── Comment (replies)
                                 │
                                 │ 1:N
                                 ▼
                             Attachment

Detaylı mimari dokümantasyonu için: docs/ARCHITECTURE.md


📚 API Referansı

Kimlik Doğrulama

Endpoint Metod Açıklama
/api/auth/register POST Yeni kullanıcı kaydı
/api/auth/login POST Giriş yap, token al
/api/auth/refresh POST Access token yenile
/api/auth/logout POST Çıkış yap
/api/auth/me GET Profil bilgisi

Kurslar

Endpoint Metod Açıklama
/api/courses GET Kurs listesi
/api/courses/:id GET Kurs detayı
/api/courses POST Kurs oluştur (Eğitmen)
/api/courses/:id PUT Kurs güncelle
/api/courses/:id/enroll POST Kursa kayıt ol

Video & İlerleme

Endpoint Metod Açıklama
/api/videos/:lessonId/token POST Video izleme token'ı
/api/videos/:lessonId/stream GET Video streaming
/api/progress/:lessonId PUT İlerleme kaydet
/api/progress/stats/me GET Kullanıcı istatistikleri

Yorumlar

Endpoint Metod Açıklama
/api/comments/lesson/:lessonId GET Ders yorumları
/api/comments/lesson/:lessonId POST Yorum ekle
/api/comments/:id DELETE Yorum sil

📁 Proje Yapısı

knowhy-lms/
├── backend/
│   ├── prisma/
│   │   ├── schema.prisma      # Veritabanı şeması
│   │   ├── migrations/        # DB migration'ları
│   │   └── seed.ts            # Örnek veri
│   ├── src/
│   │   ├── config/            # Konfigürasyon
│   │   ├── controllers/       # Route handler'ları
│   │   ├── middlewares/       # Auth, validation, error
│   │   ├── routes/            # API route tanımları
│   │   ├── services/          # Business logic
│   │   ├── utils/             # Yardımcı fonksiyonlar
│   │   └── app.ts             # Express uygulaması
│   └── uploads/               # Video/dosya storage
├── frontend/
│   ├── src/
│   │   ├── components/        # React bileşenleri
│   │   │   ├── ui/            # shadcn/ui bileşenleri
│   │   │   ├── VideoPlayer.tsx
│   │   │   ├── CommentSection.tsx
│   │   │   └── Layout.tsx
│   │   ├── pages/             # Sayfa bileşenleri
│   │   ├── hooks/             # Custom React hooks
│   │   ├── services/          # API çağrıları
│   │   └── lib/               # Utility fonksiyonlar
│   └── public/                # Statik dosyalar
├── docs/                      # Dokümantasyon
├── docker-compose.yml         # Docker yapılandırması
├── LICENSE                    # Apache 2.0 lisansı
└── README.md                  # Bu dosya

🤝 Katkıda Bulunun

Katkılarınızı bekliyoruz! Lütfen CONTRIBUTING.md dosyasını okuyun.

Geliştirme Adımları

  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'i push edin (git push origin feature/amazing-feature)
  5. Pull Request açın

Commit Mesaj Formatı

feat: yeni özellik
fix: hata düzeltme
docs: dokümantasyon
style: kod formatı
refactor: kod yeniden yapılandırma
test: test ekleme
chore: genel bakım

📄 Lisans

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

Copyright 2024 Knowhy LMS Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

🙏 Teşekkürler

Bu projede kullanılan açık kaynak kütüphanelere ve topluluklarına teşekkür ederiz:


⬆ Başa Dön

Made with ❤️ for better learning experiences

About

Muhsin'in, Mühittin'e selam var!

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages