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:
80
gradle/libs.versions.toml
Normal file
80
gradle/libs.versions.toml
Normal file
@@ -0,0 +1,80 @@
|
||||
# Version catalog: central place for dependency versions.
|
||||
# https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
|
||||
|
||||
[versions]
|
||||
# Spring Boot 4.0.x is the release train matched by Spring Cloud 2025.1.x.
|
||||
springBoot = "4.0.8"
|
||||
springCloud = "2025.1.3"
|
||||
kotlin = "2.4.20"
|
||||
springdoc = "3.0.3"
|
||||
flexmark = "0.64.8"
|
||||
owaspSanitizer = "20260313.1"
|
||||
apachePoi = "5.5.1"
|
||||
|
||||
[libraries]
|
||||
# --- Gradle plugins used from buildSrc ---
|
||||
kotlinGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
|
||||
kotlinAllopenPlugin = { module = "org.jetbrains.kotlin:kotlin-allopen", version.ref = "kotlin" }
|
||||
kotlinNoargPlugin = { module = "org.jetbrains.kotlin:kotlin-noarg", version.ref = "kotlin" }
|
||||
springBootGradlePlugin = { module = "org.springframework.boot:spring-boot-gradle-plugin", version.ref = "springBoot" }
|
||||
|
||||
# --- Platform BOMs (versions only) ---
|
||||
springBootBom = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "springBoot" }
|
||||
springCloudBom = { module = "org.springframework.cloud:spring-cloud-dependencies", version.ref = "springCloud" }
|
||||
|
||||
# --- Spring Boot starters (versions managed by the Boot BOM) ---
|
||||
springBootStarterWeb = { module = "org.springframework.boot:spring-boot-starter-web" }
|
||||
springBootStarterWebflux = { module = "org.springframework.boot:spring-boot-starter-webflux" }
|
||||
springBootStarterValidation = { module = "org.springframework.boot:spring-boot-starter-validation" }
|
||||
springBootStarterActuator = { module = "org.springframework.boot:spring-boot-starter-actuator" }
|
||||
springBootStarterDataJpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa" }
|
||||
springBootStarterFlyway = { module = "org.springframework.boot:spring-boot-starter-flyway" }
|
||||
springBootStarterSecurity = { module = "org.springframework.boot:spring-boot-starter-security" }
|
||||
springBootStarterOauth2ResourceServer = { module = "org.springframework.boot:spring-boot-starter-oauth2-resource-server" }
|
||||
springBootStarterThymeleaf = { module = "org.springframework.boot:spring-boot-starter-thymeleaf" }
|
||||
springBootStarterTest = { module = "org.springframework.boot:spring-boot-starter-test" }
|
||||
springBootDevtools = { module = "org.springframework.boot:spring-boot-devtools" }
|
||||
springSecurityTest = { module = "org.springframework.security:spring-security-test" }
|
||||
|
||||
# --- Spring Cloud ---
|
||||
springCloudStarterGatewayWebflux = { module = "org.springframework.cloud:spring-cloud-starter-gateway-server-webflux" }
|
||||
|
||||
# --- Plain Spring libraries (for shared modules) ---
|
||||
springWeb = { module = "org.springframework:spring-web" }
|
||||
springContext = { module = "org.springframework:spring-context" }
|
||||
springBootAutoconfigure = { module = "org.springframework.boot:spring-boot-autoconfigure" }
|
||||
springSecurityConfig = { module = "org.springframework.security:spring-security-config" }
|
||||
springSecurityWeb = { module = "org.springframework.security:spring-security-web" }
|
||||
springSecurityOauth2Jose = { module = "org.springframework.security:spring-security-oauth2-jose" }
|
||||
|
||||
# --- Persistence / migrations ---
|
||||
flywayCore = { module = "org.flywaydb:flyway-core" }
|
||||
flywayPostgresql = { module = "org.flywaydb:flyway-database-postgresql" }
|
||||
postgresql = { module = "org.postgresql:postgresql" }
|
||||
jacksonYaml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml" }
|
||||
jacksonModuleKotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin" }
|
||||
|
||||
# --- API docs ---
|
||||
springdocStarterWebmvcUi = { module = "org.springdoc:springdoc-openapi-starter-webmvc-ui", version.ref = "springdoc" }
|
||||
|
||||
# --- Markdown rendering ---
|
||||
flexmarkAll = { module = "com.vladsch.flexmark:flexmark-all", version.ref = "flexmark" }
|
||||
owaspHtmlSanitizer = { module = "com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer", version.ref = "owaspSanitizer" }
|
||||
|
||||
# --- Spreadsheet import/export ---
|
||||
apachePoiOoxml = { module = "org.apache.poi:poi-ooxml", version.ref = "apachePoi" }
|
||||
|
||||
# --- Tests / Testcontainers (versions managed by the Boot BOM) ---
|
||||
springBootTestcontainers = { module = "org.springframework.boot:spring-boot-testcontainers" }
|
||||
testcontainersPostgresql = { module = "org.testcontainers:testcontainers-postgresql" }
|
||||
testcontainersJunitJupiter = { module = "org.testcontainers:testcontainers-junit-jupiter" }
|
||||
|
||||
[bundles]
|
||||
springWeb = ["springBootStarterWeb", "springBootStarterValidation", "springBootStarterActuator"]
|
||||
springPersistence = ["springBootStarterDataJpa", "flywayCore", "flywayPostgresql", "postgresql"]
|
||||
|
||||
[plugins]
|
||||
kotlinPluginJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
||||
kotlinPluginSpring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }
|
||||
kotlinPluginJpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" }
|
||||
springBootPlugin = { id = "org.springframework.boot", version.ref = "springBoot" }
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#Thu Sep 10 14:24:06 MSK 2026
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
Reference in New Issue
Block a user