Vladislav Kopnin 006951adae UI rework: modal dialogs, inline lab editing, manual creation, content management
- Dashboard: real stats (groups, students, labs, average grade), labs/groups
  summary lists, no placeholder tile
- Lab page: view + edit combined — metadata form in modal, condition rendered
  as markdown, per-level variant tables with add/edit/delete dialogs,
  level rename/delete, student level/variant selectors with group filter
- Labs list: create-lab dialog with manual level entry (code; title lines)
- Groups: create-group dialog, add-student dialog (auto password, toast card)
- Content: public /learn reader is the single place; admin buttons (new
  article with chapter/section create-or-select, rename/delete chapters and
  sections, move articles between sections, import zip) appear for admins;
  removed separate 'Контент' admin section
- Buttons use btn classes instead of nav-link
- Favicon: generated SVG book icon
- Security: CSRF synchronizer token interceptor (replaced spring-security in
  web which broke logback under nested jars), session regenerated on login,
  hardened session cookie, gateway actuator limited to health,info
- Jackson 3: nullable-safe request DTOs for labs (FAIL_ON_NULL_FOR_PRIMITIVES)
- academic: POST /labs (manual create with levels), level add/rename/delete,
  content chapters/sections CRUD, article create/move/delete endpoints
2026-09-11 16:00:56 +03:00

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)

Запуск

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.

Сборка и тесты

./gradlew build       # сборка всех модулей
./gradlew check       # тесты и проверки

Переменные окружения для БД: LMS_DB_URL, LMS_DB_USER, LMS_DB_PASSWORD.

Description
No description provided
Readme 5.9 MiB
Languages
Kotlin 55.2%
HTML 26.4%
JavaScript 12.5%
CSS 5.2%
Shell 0.5%
Other 0.2%