Bu proje, NestJS backend ve React frontend ile geliştirilmiş bir Online Kurs Yönetim Sistemidir.
backend/- NestJS backend uygulamasıfrontend/- React frontend uygulaması
- Node.js (v18 veya üzeri)
- npm veya yarn
- MySQL (v8.0 veya üzeri)
- MySQL'de yeni bir veritabanı oluşturun:
CREATE DATABASE course_management;- Backend dizininde
.envdosyası oluşturun (opsiyonel):
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=your_password
DB_DATABASE=course_managementNot: Eğer .env dosyası oluşturmazsanız, varsayılan değerler kullanılacaktır.
- Backend dizinine gidin:
cd backend- Bağımlılıkları yükleyin:
npm install- Backend'i çalıştırın:
npm run start:devBackend varsayılan olarak http://localhost:3001 adresinde çalışacaktır.
Not: Backend MySQL veritabanı kullanmaktadır ve TypeORM synchronize: true modunda çalışmaktadır (sadece development için). Veritabanı tabloları otomatik olarak oluşturulacaktır.
- Yeni bir terminal açın ve frontend dizinine gidin:
cd frontend- Bağımlılıkları yükleyin:
npm install- Frontend'i çalıştırın:
npm startFrontend varsayılan olarak http://localhost:3000 adresinde çalışacaktır.
- Kullanıcı kaydı (Register)
- Kullanıcı girişi (Login)
- JWT token tabanlı yetkilendirme
- Rol bazlı erişim kontrolü (STUDENT, INSTRUCTOR)
- User - Kullanıcılar (STUDENT, INSTRUCTOR rolleri)
- Course - Kurslar
- Lesson - Dersler
- Category - Kategoriler
- Enrollment - Kayıtlar (Öğrenci-Kurs ilişkisi)
- User → Course (One-to-Many): Bir eğitmen birden fazla kurs oluşturabilir
- Course → Lesson (One-to-Many): Bir kurs birden fazla ders içerebilir
- Course ↔ Category (Many-to-Many): Bir kurs birden fazla kategoriye ait olabilir, bir kategori birden fazla kurs içerebilir
- User ↔ Course (Many-to-Many via Enrollment): Bir öğrenci birden fazla kursa kayıt olabilir, bir kurs birden fazla öğrenciye sahip olabilir
Tüm entity'ler için (Courses, Lessons, Categories) frontend üzerinden:
- Create (Oluşturma)
- Read (Okuma/Listeleme)
- Update (Güncelleme)
- Delete (Silme)
INSTRUCTOR (Eğitmen):
- Kurs oluşturma, düzenleme ve silme
- Kurslarına ders ekleme ve silme
- Oluşturduğu kursları görüntüleme
STUDENT (Öğrenci):
- Tüm kursları görüntüleme
- Kurslara kayıt olma
- Kayıt olduğu kursları görüntüleme
- Kurs detaylarını ve dersleri görüntüleme
- Frontend'i açtığınızda login sayfası görünecektir
- Yeni bir kullanıcı oluşturmak için "Kayıt Ol" linkine tıklayın
- Kayıt sırasında rol seçimi yapabilirsiniz (STUDENT veya INSTRUCTOR)
- Giriş yaptıktan sonra dashboard'a yönlendirileceksiniz
- Dashboard'dan tüm kursları görüntüleyebilir, kayıt olduğunuz/oluşturduğunuz kursları görebilirsiniz
- Eğitmenler yeni kurs oluşturabilir ve kurslarına ders ekleyebilir
- Öğrenciler kurslara kayıt olabilir ve dersleri görüntüleyebilir
POST /auth/register- Kullanıcı kaydıPOST /auth/login- Kullanıcı girişi
GET /courses- Tüm kursları listeleGET /courses/:id- Belirli bir kursu getirPOST /courses- Yeni kurs oluştur (INSTRUCTOR)PATCH /courses/:id- Kursu güncelle (INSTRUCTOR)DELETE /courses/:id- Kursu sil (INSTRUCTOR)
GET /lessons- Tüm dersleri listeleGET /lessons/:id- Belirli bir dersi getirGET /lessons/course/:courseId- Bir kursa ait tüm dersleri getirPOST /lessons- Yeni ders oluştur (INSTRUCTOR)PATCH /lessons/:id- Dersi güncelle (INSTRUCTOR)DELETE /lessons/:id- Dersi sil (INSTRUCTOR)
GET /categories- Tüm kategorileri listeleGET /categories/:id- Belirli bir kategoriyi getirPOST /categories- Yeni kategori oluşturPATCH /categories/:id- Kategoriyi güncelleDELETE /categories/:id- Kategoriyi sil
GET /enrollments- Tüm kayıtları listeleGET /enrollments/my-courses- Kullanıcının kayıt olduğu kursları getirPOST /enrollments- Kursa kayıt ol (STUDENT)DELETE /enrollments/:id- Kaydı iptal et
GET /users/profile- Kullanıcı profil bilgilerini getirGET /users- Tüm kullanıcıları listele
Not: Tüm endpoint'ler (auth hariç) JWT token gerektirir. Bazı endpoint'ler belirli roller için kısıtlanmıştır.
Proje MySQL veritabanı kullanmaktadır. TypeORM synchronize: true modunda çalışmaktadır (sadece development için). Production ortamında migration kullanılmalıdır.
- users - Kullanıcı bilgileri
- courses - Kurs bilgileri
- lessons - Ders bilgileri
- categories - Kategori bilgileri
- course_categories - Kurs-Kategori ilişki tablosu (Many-to-Many)
- enrollments - Öğrenci-Kurs kayıt tablosu
- NestJS
- TypeORM
- MySQL
- JWT (JSON Web Tokens)
- Passport.js
- bcrypt
- class-validator
- class-transformer
- React 18
- React Router DOM
- Axios
- Context API (State Management)
- Modern ve responsive tasarım
- Glassmorphism efektleri
- Animasyonlu UI elementleri
- Rol bazlı yetkilendirme
- JWT token tabanlı kimlik doğrulama
- RESTful API yapısı
- TypeORM ile veritabanı yönetimi