Strata

English | 简体中文

CI Maven Central License

A modular-monolith backend framework for admin products: RBAC, operations, notifications, AI tooling and a plugin SPI, with module boundaries enforced by Maven, Spring Modulith and ArchUnit.

Name note: this project is unrelated to OpenGamma's "Strata" market-risk library — same dictionary word, different project.

Built on Spring Boot 4.1 and JDK 25 (build with JDK 25, run on Java 21+ �?see Build requirement). Ships the backend framework, a React admin console and runnable examples.

Try the demo

Hosted demo: https://demo.simplecharlie.dev �?sign in as admin / admin123 (shared evaluation instance: data resets periodically and is not private). Prefer a local instance for anything beyond a quick look:

git clone https://github.com/simplezac1995/strata.git
cd strata
docker compose up --build

Local evaluation only �?replace every demo secret before deploying. The optional Keycloak SSO overlay:

docker compose -f docker-compose.yml -f docker-compose.sso.yml up --build

Then click Continue with Keycloak on the login page (demo / demo123). The demo user is mapped to the admin role through its Keycloak group:

SSO demo

Screenshots

Login Dashboard
Login Dashboard
User management (RBAC) AI chat
User management AI chat
SSO login (Keycloak) After SSO sign-in
SSO login SSO dashboard
SAML login (Keycloak) SAML console
SAML login SAML dashboard
Hosted demo (login) Hosted demo (dashboard)
Hosted demo login Hosted demo dashboard

Screenshots taken from the repository's own docker compose demo; the last two come from the hosted evaluation instance.

Features

What is in this repository (editions)

Strata is open core, with a boundary you can verify from this repository:

Case study: the framework is used in production for a real high-stakes vertical (payments, KYC and responsible-gambling compliance), with its business modules kept private. This describes the maintainer's own deployment only �?no external customers are claimed.

Repository layout

Path Content
strata/ Maven reactor: framework modules, starter, plugins, generator, examples
strata-ui/ React admin console
docs/ architecture, conventions, adoption guide and generated configuration reference
strata/examples/ minimal runnable application and the module golden path
scripts/ repository policy gates and the configuration-reference generator

Who maintains this

Strata is currently maintained by @simplezac1995 as a single maintainer.

Build requirement

Build with JDK 25; run on Java 21+. The project compiles with a JDK 25 toolchain targeting the Java 21 bytecode level (maven.compiler.release=21, no preview features), and CI starts the built application on a Java 21 runtime. Maven 3.9+ is needed for the backend; Node 22 and pnpm 11 for the admin console. Publishing stays on a single JDK 25 build matrix, so there is no second toolchain to maintain.

Quick start

git clone https://github.com/simplezac1995/strata.git
cd strata/examples/strata-minimal-app
mvn spring-boot:run    # JDK 25 build (Java 21 bytecode); PostgreSQL 18 via STRATA_DB_* variables; Swagger at /swagger-ui.html

Or add the published starter to an existing application:

<dependency>
  <groupId>io.github.simplezac1995</groupId>
  <artifactId>strata-spring-boot-starter</artifactId>
  <version>0.11.1</version>
</dependency>

The starter ships the framework schema at classpath:db/strata-framework (V1__strata_framework.sql and V2__idempotency_record.sql); keep that Flyway location and append your own migrations from V3 upward. AI and generator modules auto-configure themselves when their dependencies are present.

Documentation

Build and test

cd strata
mvn -B verify                      # JDK 25 build (Java 21 bytecode): compile + tests + Spotless + ArchUnit + JaCoCo

cd ../strata-ui
pnpm install --frozen-lockfile
pnpm check                         # typecheck + lint + tests + i18n + formatting + build + bundle size

The exported repository is a single curated history of the framework; the private product repository that consumes it is not part of this project.

Versioning and releases

Semantic versioning with immutable Maven Central releases: pushing a v* tag runs the release workflow (GPG signing, SBOM, Central Portal publish). See CHANGELOG.md.

License

Apache License 2.0 �?see LICENSE and NOTICE.