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
- 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
- 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
POST /auth/register– İstifadəçi yaratmaqPOST /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.
POST /lesson– Yeni dərs yaratmaqPUT /lesson/update/{id}– Dərsi yeniləməkDELETE /lesson/{id}– Dərsi silməkGET /lesson/{id}– Dərsi ID üzrə əldə etməkGET /lesson/lessons– Bütün dərsləri göstərməkPUT /lesson/active/{id}– Dərsi aktiv etməkPUT /lesson/de-active/{id}– Dərsi deaktiv etmək
POST /student– Yeni tələbə yaratmaqPUT /student/update/{id}– Tələbəni yeniləməkDELETE /student/{id}– Tələbəni silməkGET /student/{id}– Tələbəni ID üzrə əldə etməkGET /student/students– Bütün tələbələri göstərmək
POST /lesson-student– Tələbə və dərs arasında əlaqə yaratmaqPUT /lesson-student/update/{id}– Əlaqəni yeniləməkDELETE /lesson-student/{id}– Əlaqəni silməkGET /lesson-student/{id}– Əlaqəni ID üzrə əldə etməkGET /lesson-student/students– Bütün əlaqələri göstərmək
- StudentLesson Entity – OneToMany əlaqəsi ilə student və lesson arasında əlaqə yaratmaq
- 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
- Cacheable – StudentService və LessonService-in bütün
getmetodları Redis cache ilə işləyir - Exception Handling – Bütün exceptionlar obyekt formatında,
Accept-Languageheader-a uyğun olaraq 3 dildə qaytarılır - AOP Logging – Hər bir service metodundan əvvəl metod adı, service adı və argumentlər loga yazılır
- DTO/DAO Prinsipləri – MapStruct vasitəsilə entity və DTO çevrilmələri həyata keçirilir
- 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.