{"ref":"artifact:abap2ui5-web-abap2ui5","page":"/artifacts/abap2ui5-web-abap2ui5","json":"/artifacts/abap2ui5-web-abap2ui5.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-web-abap2ui5","name":"web-abap2UI5","artifact_type":"web-tool","ecosystem":"abap","domain":"developer-experience","secondary_domains":["ui-and-frontend-bridge"],"origin_ring":"community-org","description":{"one_line":"A build pipeline and the page it deploys: the [abap2UI5](artifact:abap2ui5-abap2ui5) backend downported, transpiled to JavaScript and webpacked into one script that runs inside a browser tab, with no server and no SAP system behind it.","short":"abap2UI5 transpiled to JavaScript and run in a browser tab","what_it_solves":"Seeing [abap2UI5](artifact:abap2ui5-abap2ui5) run normally means a system to install it in. This repository clones the framework and its samples at a pinned commit, downports them with [abaplint](artifact:abaplint-abaplint), transpiles them with [@abaplint/transpiler](artifact:abaplint-transpiler) and webpacks the result into a single bundle: at runtime `app/web.mjs` starts the transpiled backend, issues an in-memory HTTP GET against the same `z2ui5_cl_http_handler` that serves real systems and writes the returned page, while sql.js, [SQLite](external:sqlite) compiled to wasm, stands in for the database. There is no static frontend copy in the bundle, so frontend and backend are always the same abap2UI5 commit; the deployed result is a static site on [GitHub](external:github) Pages. The same transpiled backend can also be served by express on port 3000 with `npm run serve:express`, and `npm run media -- --app <app-class>` records an abap2UI5 app as video and screenshots against the published build or any other page that starts apps via `?app_start=`.","when_not_to_use":"It is not the framework and takes no framework fixes: those belong upstream in abap2UI5, and nothing under `src/`, `downport/`, `output/` and `build/` here is a source file. The build is frozen on pinned commits with no scheduled rebuild, so it does not show what abap2UI5 main does today, samples in subfolders of the samples repository are excluded because they require a real SAP system, and a known upstream transpiler issue leaves `check_on_init( )` always false, so backend-built view XML may not be returned.","to_build_on_it":"Refreshing the demo is a hand edit of `ci/pins.json`, which holds the commits of abap2UI5, samples, open-abap-core and express-icf-shim and the UI5 release, in one pull request; the `build_web` workflow's unit tests and browser smoke gate decide whether it deploys. `AGENTS.md` lists the pieces that look removable and are not, each with the broken deploy that paid for it."},"links":{"repo":"https://github.com/abap2UI5/web-abap2UI5","homepage":"https://abap2ui5.github.io/web-abap2UI5-build/"},"compat":{"runtimes":["node","build-time"]},"provides":[{"capability":"capability:local-development","what_it_does":"Runs the whole abap2UI5 backend with no ABAP system attached: transpiled to JavaScript and either served by express on port 3000, or webpacked into a browser bundle where sql.js stands in for the database and the page needs no server at all.","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README","checked":"2026-10-17","quote":"complete abap2UI5 backend, downported, transpiled to JavaScript and running\ninside your browser tab. No server, no SAP system."},{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Run Webservice","checked":"2026-10-17","quote":"The transpiled backend on Node.js, served by express on port 3000. Started by\nhand — it is not part of any test run:"},{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Functionality","checked":"2026-10-17","quote":"Running the same backend **in the browser**: webpack bundles the transpiled\n  ABAP into one script and [sql.js](https://sql.js.org/) (SQLite compiled to\n  wasm) stands in for the database, so the demo needs no server at all — it is\n  a static GitHub Pages site"}]}],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","for":"the backend the pipeline downports, transpiles and bundles; `ci/clone.mjs` fetches it at the commit pinned in `ci/pins.json`, together with the samples repository","requirement":"required","basis":"binding","role":"framework","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/AGENTS.md","title":"web-abap2UI5 — AGENTS.md, What this repo is","checked":"2026-10-17","quote":"A build pipeline, not a framework. It clones [abap2UI5](https://github.com/abap2UI5/abap2UI5)\nand [samples](https://github.com/abap2UI5/samples), downports them with\nabaplint, transpiles them to JavaScript with `@abaplint/transpiler`, and\nwebpacks the result into a single bundle that runs the **whole backend inside\nthe browser tab** — sql.js stands in for the database."}]},{"ref":"artifact:abaplint-abaplint","for":"downports the cloned sources before they are transpiled; `@abaplint/cli` is pinned to the version abap2UI5 itself syntax-checks with, because the downport result has to pass the same check","requirement":"required","basis":"binding","role":"downporter","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Functionality","checked":"2026-10-17","quote":"Downporting with [abaplint](https://abaplint.org/)"},{"url":"https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/AGENTS.md","title":"web-abap2UI5 — AGENTS.md, Pins","checked":"2026-10-17","quote":"`@abaplint/cli` is pinned exactly (no caret) to the version abap2UI5 itself\nsyntax-checks with — the downport result has to pass the same check as\nupstream's source — at the abap2UI5 commit in `ci/pins.json`."}]},{"ref":"artifact:abaplint-transpiler","for":"turns the downported ABAP into the JavaScript that the express host and the browser bundle run","requirement":"required","basis":"binding","role":"transpiler","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Functionality","checked":"2026-10-17","quote":"Transpiling to JS with [abaplint/transpiler](https://github.com/abaplint/transpiler)"}]},{"ref":"artifact:open-abap-open-abap-core","for":"the ABAP core the transpiled code runs against; its commit is one of the pinned inputs and the transpiler reads it from `deps/` instead of cloning it","requirement":"required","basis":"binding","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Functionality","checked":"2026-10-17","quote":"Running on Node.js with [open-abap](https://github.com/open-abap/open-abap)"},{"url":"https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/AGENTS.md","title":"web-abap2UI5 — AGENTS.md, Frozen inputs","checked":"2026-10-17","quote":"- **`ci/pins.json`** holds every external input: the commit of abap2UI5,\n  samples, open-abap-core and express-icf-shim, and the UI5 release."}]},{"ref":"artifact:open-abap-express-icf-shim","for":"exposes the transpiled ICF handler as a service; the transpile step runs with it, and its commit is pinned alongside the others","requirement":"required","basis":"binding","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Functionality","checked":"2026-10-17","quote":"Service exposing via [express-icf-shim](https://github.com/open-abap/express-icf-shim)"},{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Webpack Build Strategy","checked":"2026-10-17","quote":"3. Transpile with express-icf-shim into /output/"}]},{"ref":"external:sqlite","for":"stands in for the database as sql.js, SQLite compiled to wasm, in the bundle that runs in the browser tab","requirement":"conditional","condition":"the webpack browser build, where there is no server behind the page","basis":"binding","role":"database","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/app/pages/README.md","title":"web-abap2UI5 — app/pages/README.md","checked":"2026-10-17","quote":"The whole abap2UI5 backend, downported, transpiled to JavaScript and bundled\ninto a single script that runs inside the browser tab: SQLite compiled to wasm\nstands in for the database, the frontend HTML is served by the transpiled\n`z2ui5_cl_http_handler` in-process, and there is no server behind it at all."}]},{"ref":"external:ffmpeg","for":"encodes the recorded app to `.mp4` and `.gif`; the media pipeline writes `.webm` and `.png` without it","requirement":"conditional","condition":"`.mp4` and `.gif` output from `npm run media` is wanted","basis":"binding","role":"video-encoder","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README, Media Pipeline","checked":"2026-10-17","quote":"switches between desktop, phone and tablet viewports. Output per app:\n`.webm` and `.png` always, `.mp4` (what LinkedIn ingests best) and `.gif`\nwhen ffmpeg is installed."}]}],"connects":[{"ref":"artifact:openui5-core","kind":"data","direction":"outbound","for":"the page loads the pinned UI5 release from the OpenUI5 CDN: `app/web.mjs` rewrites the bootstrap `src` to `https://sdk.openui5.org/<ui5>/resources/sap-ui-core.js`, pinned to the 1.136 long-term-maintenance line","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/web-abap2UI5/main/AGENTS.md","title":"web-abap2UI5 — AGENTS.md, Frozen inputs","checked":"2026-10-17","quote":"`app/web.mjs` rewrites the bootstrap `src`\n  to `https://sdk.openui5.org/<ui5>/resources/sap-ui-core.js`. The UI5 pin is\n  the 1.136 long-term-maintenance line, so the CDN keeps serving it for years;"}]}],"interfaces":[{"key":"live-demo","kind":"ui","direction":"in","for":"The deployed page at abap2ui5.github.io/web-abap2UI5-build, where the transpiled backend answers in the browser tab and an app is started with `?app_start=`.","sources":[{"url":"https://github.com/abap2ui5/web-abap2ui5","title":"abap2UI5/web-abap2UI5 — README","checked":"2026-10-17","quote":"**Live demo: [abap2ui5.github.io/web-abap2UI5-build](https://abap2ui5.github.io/web-abap2UI5-build/)** — the\ncomplete abap2UI5 backend, downported, transpiled to JavaScript and running\ninside your browser tab. No server, no SAP system."}]}],"maintainers":["actor:abap2ui5"],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:larshp","actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"4 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"build_web green, 2026-10-11"}],"practice":[{"label":"Tests","tier":"good","evidence":"1 test file"},{"label":"Docs","tier":"good","evidence":"README 6 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":9,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":9,"forks":1,"open_issues":0,"archived":false,"pushed_at":"2026-10-11","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2023-04-23T11:47:19Z","open_prs":0,"tree_truncated":false,"test_files":1,"workflows":1,"other_ci":false,"readme_bytes":6383,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2023-04-23","last_commit":"2026-10-11","commits":101,"contributors":4,"ci_status":"success","ci_run_at":"2026-10-11","ci_workflow":"build_web","ci_event":"push","readme_path":"README.md","readme_sha":"8ff7aba4888497197184dd0b337e9b10f1f73ef9","repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"github-releases","url":"https://github.com/abap2UI5/web-abap2UI5/releases"},"format":"github-releases","releases":[{"version":"1.135.0","date":"2024-10-23","date_source":"github","heading":"1.135.0","url":"https://github.com/abap2UI5/web-abap2UI5/releases/tag/1.135.0","sections":[],"hash":"0c1545430afc038f"},{"version":"1.134.0","date":"2024-09-22","date_source":"github","heading":"1.134.0","url":"https://github.com/abap2UI5/web-abap2UI5/releases/tag/1.134.0","sections":[],"hash":"7eea927f786b0c87"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5","name":"abap2UI5","json":"/actors/abap2ui5.json"}],"contributors":[{"ref":"actor:larshp","name":"Lars Hvam","json":"/actors/larshp.json"},{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_on_to":{"ref":"artifact:abap2ui5-abap2ui5","name":"abap2UI5","json":"/artifacts/abap2ui5-abap2ui5.json"},"add_ons":[],"answered_through_parts":[]}}