Skip to content

The cap2UI5 Ecosystem

cap2UI5 is not one repository. It is a chain of six — plus the upstream project they all descend from — and almost every file you can see is generated by the one before it. That matters the moment you want to change something or report a bug: editing the obvious place usually means editing a build output, and your change disappears on the next sync.

The repositories

The first row is the upstream project; the six below it are the cap2UI5 chain.

RepositoryWhat it isHand-written?
abap2UI5/abap2UI5 + abap2UI5/samplesthe upstream ABAP original and its sample catalogueyes — but that is a different project
builder-abap2UI5-jsmirrors upstream, transpiles ABAP→JS, assembles the platform-neutral core package abap2UI5src/, scripts/, test/
builder-cap2UI5assembles the CAP app from its own src/ plus the mirrored core, then publishes itsrc/, scripts/, test/
cap2UI5the deployable CAP app — what you clone to run itno, except .github/
builder-cap2UI5-webbundles the app into a static, backend-less siteyes
web-cap2UI5-buildthe built playgroundno
docsthis siteyes

How a change flows through

abap2UI5 (ABAP)
     │  nightly mirror + transpile

builder-abap2UI5-js ── core package `abap2UI5` ──┐
                                                 │ mirror

                                        builder-cap2UI5
                                                 │ assemble + publish 1:1

                                            cap2UI5  ← the app you deploy
                                                 │ trigger

                                       builder-cap2UI5-web
                                                 │ esbuild bundle

                                        web-cap2UI5-build → GitHub Pages

Each hop is a scheduled GitHub Actions workflow. A change in upstream ABAP reaches the playground without anyone touching a keyboard — and so does a mistake, which is why every hop has a gate (transpile parse gate, load gate, unit-test ratchet, app test suite, browser smoke test).

Where do I report this?

The problemThe repository
an app behaves wrong, a control renders wrongabap2UI5 if it reproduces there too, otherwise builder-abap2UI5-js
a transpiled class is wrong or missingbuilder-abap2UI5-js
the CAP app: server wiring, service, database, deployment descriptorsbuilder-cap2UI5 (not the app repo — it is overwritten)
the playground is broken or stalebuilder-cap2UI5-web
these docs are wrongdocs

Rule of thumb: if the file you want to change lives in a repository that says "generated" above, the fix belongs one hop upstream. Each generated repo's AGENTS.md names its source explicitly.

What this means for your own apps

Everything the pipeline owns is overwritten. Your code must live somewhere it does not reach:

  • srv/app/ in the app repo — but note this folder ships from builder-cap2UI5 and is replaced on every publish, so it suits demos, not real projects.

  • an external folder registered at startup — the safe option:

    js
    require("abap2UI5/register-apps")(__dirname + "/my-apps");
    // or:  Z2UI5_APP_DIRS=/abs/path/to/my-apps cds-serve
  • never core/ or core/srv/app/samples/ — both are replaced wholesale by the nightly sync.

Released under the MIT License.