{"ref":"artifact:abap2ui5-app-template","page":"/artifacts/abap2ui5-app-template","json":"/artifacts/abap2ui5-app-template.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-app-template","name":"app-template","artifact_type":"sample","ecosystem":"abap","domain":"developer-experience","secondary_domains":["ai-and-agents"],"origin_ring":"community-org","use_as":"starting-point","description":{"one_line":"Starter repository for an [abap2UI5](artifact:abap2ui5-abap2ui5) app: one ABAP class with a unit test, [abaplint](artifact:abaplint-abaplint) and the abap2UI5 linter run by CI on every push, and the files an agent reads first.","short":"Starter repository for an abap2UI5 app with CI and agent setup","what_it_solves":"An [abap2UI5](artifact:abap2ui5-abap2ui5) app is one ABAP class in an [abapGit](artifact:abapgit-abapgit) repository, and what surrounds it is assembled by hand in every new project: which checks run, how they resolve the framework without a system, what an agent reads before it writes the class. This repository is that assembly kept in one place — `src/zcl_app_001` with an ABAP Unit test that drives it through a test double for `z2ui5_if_client`, [abaplint](artifact:abaplint-abaplint) and the [abap2UI5-linter](https://github.com/abap2UI5/linter) as npm devDependencies with a workflow that runs both on every push, `AGENTS.md`, `.claude/skills/` and `.mcp.json` for an agent, and `npm run doctor` to report which of them is missing on the machine. Four ways start a project from it: GitHub's *Use this template*, `npm create abap2ui5-app@latest`, the [VS Code extension](https://github.com/abap2UI5/vscode-extension) and the [mcp-server](https://github.com/abap2UI5/mcp-server)'s `scaffold_app`, all executing the same `template.json`, so a project started any way is the same project. For a project that did not come from the template, `--agent-setup` adds the agent files and the two gates' configs without touching its classes and without overwriting a file it already has. The namespace `abaplint.jsonc` enforces, the LICENSE holder and the ABAP package are left for you to decide, and so is the system: the gates and the unit test run offline, while the app itself needs the framework installed with abapGit and an ICF endpoint for its HTTP handler.","to_build_on_it":"What a project gets, and which text in it carries a name, is written in `template.json` rather than in the script that applies it, and the MCP server and the VS Code extension read the same file, so a file added to the list reaches every way of starting. `create-abap2ui5-app` fetches that file and the files it names from `main` at run time and carries no list of its own, so a change to the template does not wait for a package release. The render half of the view check is the part with a machine requirement: a Chromium through Playwright, which `npm run check:abap2ui5:fast` leaves out."},"links":{"repo":"https://github.com/abap2UI5/app-template","docs":"https://abap2ui5.github.io/docs/"},"maintainers":["actor:abap2ui5"],"compat":{"runtimes":["node","build-time"]},"demonstrates":["capability:generators","capability:agent-guidance","capability:abap-unit-testing"],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","for":"The framework the starter app is written against, installed in the system with abapGit; the local gates lint against release 1.145.0 or newer, pinned in `abaplint.jsonc`.","requirement":"required","basis":"binding","role":"framework","sources":[{"url":"https://github.com/abap2ui5/app-template","title":"abap2UI5/app-template — README, Quick start","checked":"2026-10-17","quote":"The starter app needs framework **1.145.0 or newer**"}]},{"ref":"artifact:abapgit-abapgit","for":"How the framework and the project reach the system; the generated project is an abapGit repository, and `--agent-setup` points the gates at the `STARTING_FOLDER` in its `.abapgit.xml`.","requirement":"required","basis":"binding","role":"deployment","sources":[{"url":"https://github.com/abap2ui5/app-template","title":"abap2UI5/app-template — README, Quick start","checked":"2026-10-17","quote":"Install the [abap2UI5 framework](https://github.com/abap2UI5/abap2UI5) in\nyour system via [abapGit](https://abapgit.org/), then install this repo\nthe same way."},{"url":"https://raw.githubusercontent.com/abap2UI5/app-template/main/create/README.md","title":"create-abap2ui5-app — README, starting folder","checked":"2026-10-17","quote":"It reads `STARTING_FOLDER` from your `.abapgit.xml`"}]}],"connects":[{"ref":"external:github","kind":"data","direction":"outbound","condition":"a project is started with `npm create abap2ui5-app`","for":"`create-abap2ui5-app` reads `template.json` and the files it names from the template's `main` branch while it runs, instead of carrying a file list of its own.","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5/app-template/main/create/README.md","title":"create-abap2ui5-app — README, What it does","checked":"2026-10-17","quote":"At run time it fetches\n`template.json` and every file it names from the template's `main` branch,"}]}],"provenance":{"discovered_via":[{"source":"source:curator"},{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"poor","evidence":"179 months since release"},{"label":"Continuity","tier":"good","evidence":"4 contributors, 1 publisher, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":"SAP_BASIS 750 and up, in its abaplint config: includes every maintained line to 816"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"template-self-check green, 2026-10-22"}],"practice":[{"label":"Tests","tier":"good","evidence":"5 test files"},{"label":"Docs","tier":"good","evidence":"docs site, README 12 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":5,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"0.1.0","majors":{"0.1":{"version":"0.1.0","date":"2011-11-20"}},"license":null,"first_release":"2011-11-20","last_release":"2011-11-20","releases":1,"cadence_days":null,"maintainers":1,"repository":"git://github.com/rolandpoulter/node-app-template.git","repository_directory":null,"peer_cds":null,"dependencies":3,"node_engine":"*","test_script":false,"types":false,"downloads_weekly":5,"downloads_monthly":44,"stars":1,"forks":0,"open_issues":3,"archived":false,"pushed_at":"2026-10-22","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2026-08-02T15:34:00Z","open_prs":3,"tree_truncated":false,"test_files":5,"workflows":6,"other_ci":false,"readme_bytes":12552,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-08-02","last_commit":"2026-10-22","commits":79,"contributors":4,"ci_status":"success","ci_run_at":"2026-10-22","ci_workflow":"template-self-check","ci_event":"push","readme_path":"README.md","readme_sha":"842dc559b61e0078ca5e64fea167eba768478412","months_since_release":179,"dormant":true,"repo_read":"2026-10-24","abap_syntax":{"repo":"abap2UI5/app-template","file":"abaplint.jsonc","url":"https://github.com/abap2UI5/app-template/blob/HEAD/abaplint.jsonc","version":"v750","floor":"750","checked":"2026-10-26"}},"release_notes":{"license":"MIT","quotable":true,"versions":[{"version":"0.1.0","date":"2011-11-20"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5","name":"abap2UI5","json":"/actors/abap2ui5.json"}],"contributors":[{"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":[]}}