From f01046ddc4e30786b5c3e9eebcc3b218a48afdfa Mon Sep 17 00:00:00 2001 From: Iliyan Velichkov Date: Thu, 4 Jun 2026 15:10:10 +0300 Subject: [PATCH 1/3] Add CLAUDE.md with build commands and architecture guidance Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3e3a3db --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,66 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## What this is + +Atlas is a **packaging/distribution project**, not a standalone codebase. It assembles the "Atlas Edition" — a Spring Boot application that bundles all standard [Eclipse Dirigible](https://www.eclipse.dev/dirigible/) components (the low-code/in-app development platform) plus codbex branding and a couple of custom UI components. Almost all behavior lives in the `org.eclipse.dirigible` dependencies pulled in via the `com.codbex.platform:codbex-platform-parent` parent POM; this repo mostly selects which Dirigible component groups to include and configures/brands them. + +Implication: when investigating runtime behavior or APIs, the answer is usually in the Dirigible dependencies (the `dirigible-components-*` artifacts), not in this repo's source. This repo has only a handful of Java files. + +## Build & run + +Requires JDK 21 (Amazon Corretto in the Docker image). Maven profiles `quick-build`, `unit-tests`, `integration-tests`, `tests`, and `format` are inherited from the platform parent POM. + +```shell +mvn -T 1C clean install -P quick-build # fast build, skips tests — produces the runnable jar +mvn clean install -P unit-tests # unit tests +mvn clean install -P integration-tests # integration tests (Selenide UI + API; slow) +mvn clean install -P tests # all tests +mvn verify -P format # apply code formatting (codbex-formatter.xml) +``` + +Run the built jar (the `--add-opens` flags are required): + +```shell +java \ + --add-opens=java.base/java.lang=ALL-UNNAMED \ + --add-opens=java.base/java.lang.reflect=ALL-UNNAMED \ + --add-opens=java.base/java.nio=ALL-UNNAMED \ + -jar application/target/codbex-atlas-*.jar +``` + +Add `-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000` for debugging on port 8000. + +App serves on **port 80** (`application-app-default.properties`). Default login `admin`/`admin`. UI at http://localhost:80, REST/Swagger at http://localhost/swagger-ui/index.html. + +### Run a single integration test + +Integration tests are JUnit 5 (`*IT.java`). Run one with the standard Maven test selector under the integration-tests profile, e.g.: + +```shell +mvn clean install -P integration-tests -pl integration-tests -Dit.test=HomePageIT +``` + +Note `DirigibleCommonTestSuiteIT` is a `@Suite` that aggregates a large set of Dirigible's own `*IT` classes by reference — it's where most of the integration coverage actually comes from. + +## Module layout + +Maven reactor modules (see root `pom.xml`): + +- **application** — the Spring Boot app. `AtlasApplication` is a `@SpringBootApplication` that scans `org.eclipse.dirigible` and excludes Spring's datasource/JPA auto-config (Dirigible manages its own datasources). Its `pom.xml` is the real definition of the edition: it lists every Dirigible component group included (core, security, database, engines, IDE backend/UI, APIs, templates) and the bundled JDBC drivers (Postgres, MongoDB, SAP HANA `ngdbc`, Snowflake, H2). The Spring Boot repackage produces the runnable jar. Also contains the `Dockerfile`. +- **branding** — codbex/Atlas logo, favicon, and `project.json` packaged as Dirigible resources under `META-INF/dirigible/atlas-branding/`. +- **components/ui/menu-help** and **components/ui/view-welcome** — custom Dirigible UI components that *override* the stock Dirigible ones (the stock `dirigible-components-ui-menu-help` and `dirigible-components-ui-view-welcome` are explicitly excluded in `application/pom.xml`). These are resource-only modules (HTML/JS + `.extension`/`config` files under `META-INF/dirigible/`), no Java. +- **integration-tests** — Selenide-based UI and API integration tests against the assembled application. + +## Configuration model + +Two layers of config: + +- **Spring** (`application*.properties`): `spring.profiles.active=common,app-default`. To enable Dirigible features you must activate the `common` and `app-default` profiles explicitly, plus any extra (e.g. `SPRING_PROFILES_ACTIVE=common,snowflake,app-default`). +- **Dirigible** (`dirigible.properties`): `DIRIGIBLE_*` env-style keys control branding, instance name, multi-tenancy (`DIRIGIBLE_MULTI_TENANT_MODE=false`), ports, etc. Values like `${project.version}` / `${git.commit.id}` are filled at build time. + +## Conventions + +- Java source files carry the EPL-2.0 license header (see existing files); the `format` profile and `licensing-header.txt` enforce this — run `mvn verify -P format` before committing rather than hand-editing headers. +- Releases bump the version in all POMs together (the project version is `3.0.0-SNAPSHOT` during development); the Helm chart under `helm/` is versioned in lockstep (see recent git history). From 7ce81ac7c3ee4d8a92688bf67d4d5122aa7bd020 Mon Sep 17 00:00:00 2001 From: Iliyan Velichkov Date: Thu, 4 Jun 2026 15:22:22 +0300 Subject: [PATCH 2/3] Add codbex product family context to CLAUDE.md Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 3e3a3db..139392e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,6 +6,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Atlas is a **packaging/distribution project**, not a standalone codebase. It assembles the "Atlas Edition" — a Spring Boot application that bundles all standard [Eclipse Dirigible](https://www.eclipse.dev/dirigible/) components (the low-code/in-app development platform) plus codbex branding and a couple of custom UI components. Almost all behavior lives in the `org.eclipse.dirigible` dependencies pulled in via the `com.codbex.platform:codbex-platform-parent` parent POM; this repo mostly selects which Dirigible component groups to include and configures/brands them. +Atlas is one of the [codbex product family](https://www.codbex.com/products/). It is the **all-in-one edition containing every standard component** (JavaScript development, UIs, debugging, Git, databases, jobs, messaging, security, BPM, CMS), intended for exploring the full feature set. The sibling products are specialized, narrower subsets of the same platform — e.g. Helios (API development), Hades (database management), Oceanus (CMIS document management), Hyperion (BPM, Flowable), Iapetus (ETL/integration, Apache Camel), Rhea (model-driven entities/forms/reports), Kronos (XS/ABAP compatibility), Phoebe (data workflows, Apache Airflow). They are all built the same way (this same packaging pattern over Dirigible components); Atlas simply enables all of them. + Implication: when investigating runtime behavior or APIs, the answer is usually in the Dirigible dependencies (the `dirigible-components-*` artifacts), not in this repo's source. This repo has only a handful of Java files. ## Build & run From e08a0bd49c9e67d29e17b90cbfcb279316d6b002 Mon Sep 17 00:00:00 2001 From: Iliyan Velichkov Date: Thu, 4 Jun 2026 15:24:02 +0300 Subject: [PATCH 3/3] Limit product context in CLAUDE.md to Atlas only Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 139392e..c4338d5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Atlas is a **packaging/distribution project**, not a standalone codebase. It assembles the "Atlas Edition" — a Spring Boot application that bundles all standard [Eclipse Dirigible](https://www.eclipse.dev/dirigible/) components (the low-code/in-app development platform) plus codbex branding and a couple of custom UI components. Almost all behavior lives in the `org.eclipse.dirigible` dependencies pulled in via the `com.codbex.platform:codbex-platform-parent` parent POM; this repo mostly selects which Dirigible component groups to include and configures/brands them. -Atlas is one of the [codbex product family](https://www.codbex.com/products/). It is the **all-in-one edition containing every standard component** (JavaScript development, UIs, debugging, Git, databases, jobs, messaging, security, BPM, CMS), intended for exploring the full feature set. The sibling products are specialized, narrower subsets of the same platform — e.g. Helios (API development), Hades (database management), Oceanus (CMIS document management), Hyperion (BPM, Flowable), Iapetus (ETL/integration, Apache Camel), Rhea (model-driven entities/forms/reports), Kronos (XS/ABAP compatibility), Phoebe (data workflows, Apache Airflow). They are all built the same way (this same packaging pattern over Dirigible components); Atlas simply enables all of them. +Per the [product page](https://www.codbex.com/products/), Atlas is the **all-in-one edition containing every standard component** — JavaScript development, UIs, debugging, Git, databases, jobs, messaging, security, BPM, and CMS — intended for exploring the full feature set and its applicability across scenarios. Implication: when investigating runtime behavior or APIs, the answer is usually in the Dirigible dependencies (the `dirigible-components-*` artifacts), not in this repo's source. This repo has only a handful of Java files.