Initial commit: LMS microservices scaffold
- Gradle multi-module: libs/{common-http,security-jwt,markdown,test-support},
services/{identity,academic,progress,gateway}, web (Thymeleaf+htmx)
- identity-service: JWT auth (RSA), accounts, students, groups, enrollment,
import from XLSX/CSV, credentials export, password reset
- academic-service: lab import from JSON/zip (markdown + YAML + variants),
levels, API
- progress-service: schema for student levels and variant assignments
- gateway: Spring Cloud Gateway, JWT validation, route propagation
- web: Server-side UI with flex/footer layout, light/dark theme toggle,
admin dashboard, groups CRUD, student portal placeholder
- docker-compose: PostgreSQL 18
- Tests: identity smoke test with Testcontainers
This commit is contained in:
57
README.md
Normal file
57
README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user