# LMS Микросервисная система для проведения практических занятий (Kotlin + Spring Boot + PostgreSQL 18). ## Модули - `libs/common-http` — общий формат ошибок и обработчик исключений. - `libs/security-jwt` — выпуск/проверка JWT (RSA) и `PasswordEncoder`. - `libs/markdown` — серверный рендер markdown со спойлерами и санитизацией. - `libs/test-support` — общая тестовая инфраструктура (Testcontainers, `postgres:18`). - `services/identity-service` — аккаунты, студенты, группы, зачисления (схема `identity`). - `services/academic-service` — курсы, статьи, лабораторные, уровни, варианты (схема `academic`). - `services/progress-service` — уровни студентов, распределение вариантов, работы, оценки (схема `progress`). - `services/gateway` — Spring Cloud Gateway, маршрутизация и проверка JWT. - `web` — серверный веб-интерфейс (Thymeleaf + htmx), BFF. ## Требования - JDK 21+ (сборка использует toolchain 21) - Docker (для PostgreSQL 18) ## Запуск ```bash cp .env.example .env docker compose up -d postgres ./gradlew :services:identity-service:bootRun ./gradlew :services:academic-service:bootRun ./gradlew :services:progress-service:bootRun ./gradlew :services:gateway:bootRun ./gradlew :web:bootRun ``` Порты по умолчанию: gateway `:8080`, identity `:8081`, academic `:8082`, progress `:8083`, web `:8090`. Проверка: `GET :8080/actuator/health`. ## Текущий функционал Открыть `http://localhost:8090`. При первом запуске будет предложено создать аккаунт администратора (`/setup`); далее — вход по логину и паролю. - вход администратора и студентов, обязательная смена пароля при первом входе; - группы: создание, импорт студентов из `.xls/.xlsx/.csv`, выгрузка логинов и паролей в XLSX/CSV, сброс пароля студента; - JWT (RSA, ключи генерируются при первом старте identity и не хранятся в репозитории), проверка токена на gateway, роли ADMIN/STUDENT. ## Сборка и тесты ```bash ./gradlew build # сборка всех модулей ./gradlew check # тесты и проверки ``` Переменные окружения для БД: `LMS_DB_URL`, `LMS_DB_USER`, `LMS_DB_PASSWORD`.