Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## What this is

Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Entities, Forms and Reports modeling** for Model Driven Architecture development the curated set of components in `application/pom.xml` (entity/forms/reports editors, the IDE, engines, and templates) reflects that focus.
Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Modeling and Applications** — Entities, Forms and Reports modeling for Model Driven Architecture development, plus the **Intent Driven** techniques and tools (the `app.intent` engine, the Intent Editor and the conversational Builder shell). The curated set of components in `application/pom.xml` reflects that focus.

Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 12.89.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent.
Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 14.14.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent.

**Dirigible version.** The platform parent pins it through the `dirigible.version` property (parent releases track Dirigible releases 1:1). The root `pom.xml` currently **overrides** it to `14.16.0`, because parent 14.14.0 is the newest published one and Rhea needs 14.16.0 for the Intent Driven components (Builder shell, Monitoring shell, the Personal shell rename) and for the removal of the AngularJS/TypeScript application templates. Delete the override once `codbex-platform-parent` 14.16.0 or later is published.

## Build & run

Expand Down Expand Up @@ -55,10 +57,23 @@ The app activates `common,app-default` by default (`application.properties`). To

- **`application/`** — the deliverable. `RheaApplication.java` is the Spring Boot entrypoint; it scans `org.eclipse.dirigible` and disables the default JDBC/JPA autoconfiguration (Dirigible manages its own datasources). The bulk of `application/pom.xml` is a curated list of `dirigible-components-*` dependencies that selects exactly which engines, editors, IDE views, menus, perspectives, and templates ship in this edition. **Adding/removing a platform feature = adding/removing a dependency here**, often paired with an `<exclusion>` to swap a Dirigible default for a codbex override (see below).
- **`branding/`** — codbex branding resources (logo, favicon) served as a Dirigible project under `rhea-branding`. Branding values are wired in `application/src/main/resources/dirigible.properties`.
- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible/<guid>/`) using `.extension` files that hook into platform extension points like `platform-menus`.
- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible/<guid>/`) using `.extension` files that hook into platform extension points like `platform-menus`. Because they are **forks of upstream files**, diff them against the matching Dirigible module on every version bump — they drift silently (translations must live in `i18n/<locale>/*.json`, which is the only folder `platform-core/extension-services/locales.js` scans).
- **`integration-tests/`** — browser-based integration tests extending `UserInterfaceIntegrationTest` from `dirigible-tests-framework`. Test classes end in `IT` and drive the running IDE via the `ide`/`browser` helpers.
- **`helm/otc/`** — Helm chart for Kubernetes deployment (versioned separately from the app).

## What this edition ships (the parts that matter)

Pulled either explicitly or through the `dirigible-components-group-*` aggregators (`group-core`, `group-database`, `group-engines-core`, `group-api-platform`, `group-resources-ui`, `group-ide`, `group-ui`):

- **Modeling** — the Entity Data Modeler (`.edm`/`.model`), Form Designer (`.form`), Report editor, Database Schema Modeler, CSVIM, BPMN editor.
- **Intent Driven** — `engine-intent` (the `app.intent` parse / generate / AI agent endpoints), the Intent Editor (`ui-editor-intent`, via `group-ide`) and the conversational **Builder shell** (`resources-builder`, via `group-ui`).
- **The single application stack** — Harmonia UI + client Java: `template-application-schema`, `-dao-java`, `-rest-java`, `-ui-harmonia-java`, `-events-java` and `template-form-builder-harmonia`. There is no AngularJS or TypeScript application stack any more (removed from Dirigible in 14.16.0), and the generated apps run on the Harmonia SPA shells (`resources-application`, `application-core`).
- **Client Java runtime** — `engine-java` + `data-store-java` + `api-modules-java` (the `org.eclipse.dirigible.sdk.*` SDK the generated code compiles against).
- **Document output** — `engine-document` (`.print` → XSL-FO → PDF) and `engine-numbering` (`.numbers` document numbering).
- **Shells and operations** — Home launchpad, Application, Personal, Partner, Administration, **Monitoring**, Inbox and Documents shells (all via `group-ui`), plus the Workbench IDE.

Deliberately not included (add a dependency if an edition needs it): Camel/integrations engine, FTP/SFTP, Python, native apps, the S3/SharePoint CMS backends, `data-processes` (schema import/export processes) and the JS/TS starter templates.

## How customization works (the mental model)

There is no application Java code to edit for most feature work. To change what the platform does, you operate at the **packaging layer**:
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
[![Eclipse License](https://img.shields.io/badge/License-EPL%202.0-brightgreen.svg)](https://github.com/codbex/codbex-rhea/blob/main/LICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/com.codbex.rhea/codbex-rhea-application.svg)](https://central.sonatype.com/namespace/com.codbex.rhea)

Rhea Edition contains entity and forms modeling standard components.
Rhea Edition is the codbex vertical stack for **Modeling and Applications**. It contains the entity, forms and reports
modeling components, the Intent Driven development techniques and tools (the `app.intent` engine, the Intent Editor and
the conversational Builder shell), and the single application stack the generated applications run on - Harmonia UI on a
client Java backend.

It is good for Model Driven Architecture related development models.

Expand Down
58 changes: 43 additions & 15 deletions application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,16 @@
<artifactId>dirigible-components-group-database</artifactId>
<type>pom</type>
</dependency>
<!-- TypeScript @Entity decorators -> Hibernate -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-data-store</artifactId>
</dependency>
<!-- Java @Entity annotations -> Hibernate (the generated application persistence layer) -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-data-store-java</artifactId>
</dependency>

<!-- Engine -->
<dependency>
Expand Down Expand Up @@ -122,6 +132,26 @@
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-engine-cms-internal</artifactId>
</dependency>
<!-- Intent Driven development: app.intent parse / generate / AI agent -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-engine-intent</artifactId>
</dependency>
<!-- Client Java runtime: the backend of the generated applications -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-engine-java</artifactId>
</dependency>
<!-- Printable business documents: .print -> XSL-FO -> PDF -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-engine-document</artifactId>
</dependency>
<!-- First class document numbering: .numbers -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-engine-numbering</artifactId>
</dependency>

<!-- UI Frontend -->
<dependency>
Expand Down Expand Up @@ -156,6 +186,11 @@
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-api-cms</artifactId>
</dependency>
<!-- The client Java SDK (org.eclipse.dirigible.sdk.*) the generated Java code compiles against -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-api-modules-java</artifactId>
</dependency>

<!-- Resources -->
<dependency>
Expand Down Expand Up @@ -534,41 +569,34 @@
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-websocket</artifactId>
</dependency>
<!-- The single application stack: Harmonia UI + client Java backend -->
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-angular</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-dao</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-data</artifactId>
<artifactId>dirigible-components-template-application-schema</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-feed</artifactId>
<artifactId>dirigible-components-template-application-dao-java</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-odata</artifactId>
<artifactId>dirigible-components-template-application-rest-java</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-rest</artifactId>
<artifactId>dirigible-components-template-application-ui-harmonia-java</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-schema</artifactId>
<artifactId>dirigible-components-template-application-events-java</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-application-ui-angular</artifactId>
<artifactId>dirigible-components-template-form</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.dirigible</groupId>
<artifactId>dirigible-components-template-form-builder-angularjs</artifactId>
<artifactId>dirigible-components-template-form-builder-harmonia</artifactId>
</dependency>

</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,69 +9,83 @@
* SPDX-FileCopyrightText: 2022 codbex or an codbex affiliate company and contributors
* SPDX-License-Identifier: EPL-2.0
*/
exports.getMenu = () => ({
systemMenu: true,
id: 'help',
menu: {
translation: {
key: 'common:help',
},
label: 'Help',
items: [
{
translation: {
key: 'menu-help:portal',
},
label: 'Help Portal',
action: 'open',
link: 'https://www.codbex.com/documentation/tooling/',
separator: false
import { repository } from "sdk/platform";

export function getMenu() {
const hasOpenApi = repository.getResource('/registry/public/view-swagger/project.json').exists();
const config = {
systemMenu: true,
id: 'help',
menu: {
translation: {
key: 'common:help',
},
{
translation: {
key: 'menu-help:support',
label: 'Help',
items: [
{
translation: {
key: 'menu-help:portal',
},
label: 'Help Portal',
action: 'open',
link: 'https://www.codbex.com/documentation/tooling/',
separator: false
},
label: 'Contact Support',
action: 'open',
link: 'https://www.codbex.com/contact/',
separator: false
},
{
translation: {
key: 'menu-help:pricing',
{
translation: {
key: 'menu-help:support',
},
label: 'Contact Support',
action: 'open',
link: 'https://www.codbex.com/contact/',
separator: false
},
label: 'Pricing Plans',
action: 'open',
link: 'https://www.codbex.com/pricing/',
separator: false
},
{
translation: {
key: 'menu-help:whatsNew',
{
translation: {
key: 'menu-help:pricing',
},
label: 'Pricing Plans',
action: 'open',
link: 'https://www.codbex.com/pricing/',
separator: false
},
label: 'What\'s New',
action: 'open',
link: 'https://www.codbex.com/technology',
separator: false
},
{
translation: {
key: 'menu-help:updates',
{
translation: {
key: 'menu-help:whatsNew',
},
label: 'What\'s New',
action: 'open',
link: 'https://www.codbex.com/technology',
separator: false
},
label: 'Check for Updates',
action: 'open',
link: 'https://www.codbex.com/products/',
separator: true
},
{
id: 'about',
translation: {
key: 'menu-help:about',
{
translation: {
key: 'menu-help:updates',
},
label: 'Check for Updates',
action: 'open',
link: 'https://www.codbex.com/products/',
separator: true
},
label: 'About',
action: 'openWindow',
separator: false
}
]
{
id: 'about',
translation: {
key: 'menu-help:about',
},
label: 'About',
action: 'openWindow',
separator: false
}
]
}
};
if (hasOpenApi) {
config.menu.items.splice(5, 0, {
label: 'OpenAPI',
action: 'open',
link: '/services/web/view-swagger/ui/',
separator: true
});
}
});
return config;
};
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ welcome.controller('WelcomeController', ($scope, $http, WorkspaceService, Templa
controlType: 'input',
type: 'text',
label: template.parameters[i].label,
require: true,
required: template.parameters[i].required === true,
};
}
return form;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
<script src="js/welcome.js" type="text/javascript"></script>
<style>
.imgColor path {
background-color: var(--fdAvatarBackgroundColor);
fill: var(--fdAvatarColor);
background-color: var(--accent);
fill: var(--accent-foreground);
}

</style>
Expand Down Expand Up @@ -59,7 +59,7 @@ <h3 class="fd-section__title">Welcome to Rhea</h3>
<p class="fd-text">You can create server-side scripting services by using the <bk-link href="http://www.codbex.com/documentation/platform/sdk" target="_blank">Enterprise Javascript API</bk-link>
or just design your web pages in HTML5 by using your favorite client-side framework.
<br>
All source code is licensed under the <bk-link href="https://www.eclipse.org/legal/epl-v20.html" target="_blank">Eclipse Public License - v 2.0</bk-link> and maintained at <bk-link href="https://github.com/codbex/codbex-hyperion"
All source code is licensed under the <bk-link href="https://www.eclipse.org/legal/epl-v20.html" target="_blank">Eclipse Public License - v 2.0</bk-link> and maintained at <bk-link href="https://github.com/codbex/codbex-rhea"
target="_blank">GitHub</bk-link>.
</p>
</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,27 @@

class HomePageIT extends RheaIntegrationTest {

/**
* Static copy on the Home landing page - deterministic, unlike the user-dependent greeting.
*/
private static final String HOME_LANDING_TAGLINE = "Everything starts here. Pick where you want to work today.";

/**
* The root path lands on the Home launchpad, which carries no IDE perspectives - the Workbench
* welcome view is asserted separately.
*/
@Test
void testOpenHomepage() {
void testOpenHomePage() {
ide.openHomePage();

browser.assertElementExistsByTypeAndText(HtmlElementType.SPAN, "Rhea");
browser.assertElementExistsByTypeAndText(HtmlElementType.PARAGRAPH, HOME_LANDING_TAGLINE);
}

@Test
void testOpenWorkbench() {
ide.openIde();

browser.assertElementExistsByTypeAndText(HtmlElementType.HEADER3, "Welcome to Rhea");
}
}
16 changes: 8 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.codbex.platform</groupId>
<artifactId>codbex-platform-parent</artifactId>
<version>13.6.0</version>
<version>14.14.0</version>
</parent>

<name>codbex - rhea - parent</name>
Expand Down Expand Up @@ -61,6 +61,13 @@
<properties>
<project.title>Rhea by codbex</project.title>
<profile.content.phase>none</profile.content.phase>
<!--
Temporary override of the platform parent's dirigible.version. Rhea needs 14.16.0 for the
Intent Driven components (Builder shell, Monitoring shell, the Personal shell rename) and
because the AngularJS/TypeScript application templates were removed in that release.
Remove this property once codbex-platform-parent 14.16.0 (or later) is published.
-->
<dirigible.version>14.17.0</dirigible.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -160,13 +167,6 @@
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>

<!-- Olingo -->
<dependency>
<groupId>com.codbex.olingo</groupId>
<artifactId>olingo-odata2-lib</artifactId>
<type>pom</type>
</dependency>
</dependencies>

<dependencyManagement>
Expand Down
Loading