Skip to content

sabinaalizada/CourseProject

Repository files navigation

Course-Project

EvoCourses layihəsi kurs və tələbə idarəetmə sistemidir. Layihə aşağıdakı əsas funksionallıqları təmin edir:

  • Dərslərin (Lesson) idarəsi
  • Tələbələrin (Student) idarəsi
  • Tələbə və dərs arasında əlaqələrin (StudentLesson) yaradılması
  • İstifadəçi qeydiyyatı və JWT əsaslı autentifikasiya
  • Aktiv/deaktiv dərslərin scheduler və Kafka vasitəsilə idarəsi

Layihənin Məqsədi

  • Spring Boot ilə real dünya web tətbiqi yaratmaq
  • PostgreSQL, Redis cache və Kafka inteqrasiyasını öyrənmək
  • Spring Security və JWT ilə autentifikasiya tətbiq etmək
  • Service Layer testing, Exception handling və Logging prinsiplərini praktika etmək
  • Scheduler və AOP vasitəsilə sistem avtomatizasiyasını öyrənmək

İstifadə Olunan Texnologiyalar

  • Backend: Java, Spring Boot
  • Database: PostgreSQL (Docker + Liquibase)
  • Security: Spring Security, JWT
  • Caching: Redis (Docker)
  • Messaging: Kafka (Docker, topic: deactive_lessons)
  • Mapping: MapStruct
  • Testing: Mockito (Service Layer)
  • Scheduler: Spring Scheduled (1 saatlıq interval)
  • Logging: Spring AOP
  • Exception Handling: GlobalExceptionHandler (3 dildə (i18n), obyekt formatında)
  • DTO/DAO prinsiplərinə riayət olunub

İstifadəçi Rolları və Endpoint-lər

User / Auth

  • POST /auth/register – İstifadəçi yaratmaq
  • POST /auth/login – Login və JWT token əldə etmək

Qeyd: Lesson, Student və StudentLesson endpoint-lərinə giriş token tələb edir, əks halda 401 Unauthorized qaytarılır.

LessonController

  • POST /lesson – Yeni dərs yaratmaq
  • PUT /lesson/update/{id} – Dərsi yeniləmək
  • DELETE /lesson/{id} – Dərsi silmək
  • GET /lesson/{id} – Dərsi ID üzrə əldə etmək
  • GET /lesson/lessons – Bütün dərsləri göstərmək
  • PUT /lesson/active/{id} – Dərsi aktiv etmək
  • PUT /lesson/de-active/{id} – Dərsi deaktiv etmək

StudentController

  • POST /student – Yeni tələbə yaratmaq
  • PUT /student/update/{id} – Tələbəni yeniləmək
  • DELETE /student/{id} – Tələbəni silmək
  • GET /student/{id} – Tələbəni ID üzrə əldə etmək
  • GET /student/students – Bütün tələbələri göstərmək

LessonStudentController

  • POST /lesson-student – Tələbə və dərs arasında əlaqə yaratmaq
  • PUT /lesson-student/update/{id} – Əlaqəni yeniləmək
  • DELETE /lesson-student/{id} – Əlaqəni silmək
  • GET /lesson-student/{id} – Əlaqəni ID üzrə əldə etmək
  • GET /lesson-student/students – Bütün əlaqələri göstərmək

Əsas Funksionallıqlar

  1. StudentLesson Entity – OneToMany əlaqəsi ilə student və lesson arasında əlaqə yaratmaq
  2. Scheduler + Kafka – 1 saatlıq interval ilə deaktive olan dərsləri Kafka topic-ə göndərmək; Kafka listener logda məlumatı göstərir
  3. Cacheable – StudentService və LessonService-in bütün get metodları Redis cache ilə işləyir
  4. Exception Handling – Bütün exceptionlar obyekt formatında, Accept-Language header-a uyğun olaraq 3 dildə qaytarılır
  5. AOP Logging – Hər bir service metodundan əvvəl metod adı, service adı və argumentlər loga yazılır
  6. DTO/DAO Prinsipləri – MapStruct vasitəsilə entity və DTO çevrilmələri həyata keçirilir

Database Dizaynı

  • Lesson: id, name, lesson_hour, active
  • Student: id, name, surname, age
  • StudentLesson: id, studentId (FK), lessonId (FK)
  • User: id, username, password

Liquibase ilə bütün cədvəllər yaradılıb.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages