{"ref":"capability:local-development","page":"/capabilities/local-development","json":"/capabilities/local-development.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"local-development","name":"Local development","domain":"developer-experience","ecosystems":["cap","abap"],"universal":true,"description":"Running the whole stack on a laptop against real bindings — the service, the UI and the routing in front of it — without deploying to see a change.","short":"Running the whole stack on a laptop against real bindings","core_coverage":{"state":"core-and-community","assessed_at":"2026-10-15","what_core_does":"cds watch runs the service with live reload, mocks every imported remote service in process with mock data in the same in-memory database, and starts against a cloud service instance through the hybrid profile that cds bind writes without keeping the credentials on the machine; cds mock runs those services in separate processes when the setup should look like the target. In CAP Java the same loop is mvn cds:watch from the CDS Maven plugin, with Spring Boot Devtools for the reload.","where_it_stops":"The watch loop stops at the service process: the App Router that carries the authentication flow is a second process started beside it, which capire documents as cds add approuter with cds bind --exec -- npm start on port 5000, and the pages read here document no local stand-in for the HTML5 application repository. What the service runs against is not what production runs: mocked authentication is not suitable for production, a mocked service returns no data across its associations out of the box, and SQLite is not fit for production.","community_adds":"[dev-approuter](artifact:ui5-community-dev-approuter) runs the router as a development-time process that serves a project's UI5 and CDS modules, [@neoimpulse/cap-js-bootstrap](artifact:neoimpulse-cap-js-bootstrap) starts several services and the router from one command, and the local HTML5 repository of [@cap-js-community/common](artifact:cap-js-community-common) serves the apps in the app folder from the file system and proxies the rest to the remote repository. [@sang2x/captools](artifact:sang2x-captools) chains the Cloud Foundry binding and cds watch --profile hybrid behind one command, writing the resolved VCAP_SERVICES into default-env.json.","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-cli#cds-watch","title":"cds CLI — cds watch","checked":"2026-10-15","quote":"Use cds watch to watch for changed files, restarting your Node.js server."},{"url":"https://cap.cloud.sap/docs/tools/cds-cli#cds-watch","title":"cds CLI — cds watch for CAP Java","checked":"2026-10-15","quote":"For CAP Java applications, you can use mvn cds:watch instead."},{"url":"https://cap.cloud.sap/docs/guides/integration/inner-loops","title":"Inner-Loop Development — capire","checked":"2026-09-27","quote":"CAP promotes fast inner-loop development by allowing us to easily swap production-grade services with local mocks during development, without any changes to CDS models nor implementations."},{"url":"https://cap.cloud.sap/docs/guides/integration/inner-loops","title":"Inner-Loop Development — capire","checked":"2026-09-27","quote":"CAP mocks imported services automatically in-process with mock data in the same in-memory database as our own data."},{"url":"https://cap.cloud.sap/docs/guides/integration/inner-loops","title":"Inner-Loop Development — capire","checked":"2026-09-27","quote":"We can also use cds mock to mock remote services in separate processes, which brings us closer to the target setup"},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind","checked":"2026-10-15","quote":"Hybrid testing capabilities help you stay in a local development environment and avoid long turnaround times of cloud deployments, by selectively connecting to services in the cloud."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, where the credentials stay","checked":"2026-10-15","quote":"Only the information about where the credentials can be obtained is stored on your machine."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, Hybrid Setup","checked":"2026-10-15","quote":"This starts an App Router instance on http://localhost:5000 with the credentials for the XSUAA service that you have bound using cds bind."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, mocked authentication","checked":"2026-10-15","quote":"Mocked authentication is not suitable for production!"},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, mocking the remote service","checked":"2026-10-15","quote":"You can't get data from associations of a mocked service out of the box."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire","checked":"2026-10-15","quote":"SQLite is mostly intended to speed up development, but is not fit for production."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire","checked":"2026-10-15","quote":"CDS Maven plugin also provide the goal watch that does CDS build and can start your application."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, Spring Boot Devtools","checked":"2026-10-15","quote":"When you add the Spring Boot Devtools to your project, the watch goal can take advantage of the reload mechanism."}],"relationship":"narrow-by-design"},"changed_in":[{"version":"@sap/cds-dk 6.5.0","date":"2023-01-30","applies_to":{"ecosystems":["cap"]},"what_changed":"cds bind and cds watch --profile hybrid gained support for user-provided service instances, not only SAP BTP managed ones. Before this, hybrid testing against a user-provided service meant wiring VCAP_SERVICES by hand; after it, cds bind --to my-user-provided-service resolves the binding the same way it does for a managed service.","invalidates":"Guidance that hybrid testing only reaches managed BTP services. Since January 2023 a user-provided service binds the same way.","source":{"url":"https://cap.cloud.sap/docs/releases/2023/jan23","title":"CAP release notes, January 2023 — Cloud Foundry User-Provided Services in Hybrid Testing","checked":"2026-09-08","quote":"User-provided services can now be used for hybrid testing. The handling is fully transparent to users, e.g `cds bind --to my-user-provided-service` is sufficient."}},{"version":"@sap/cds-dk 7.9.1","date":"2024-05-02","applies_to":{"ecosystems":["cap"]},"what_changed":"cds bind gained support for service instances shared across Cloud Foundry orgs and spaces. Before 7.9.0, hybrid testing against a shared instance needed its own binding created per org and space; after it, cds bind can use an instance already shared into the current space directly, given Space Developer on both spaces.","invalidates":"Advice that hybrid testing needs a dedicated service instance per org and space. True before mid-2024; a shared instance is enough since.","source":{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, Shared Service Instances on Cloud Foundry","checked":"2026-09-08","quote":"On SAP BTP Cloud Foundry, service instances can be shared across orgs and spaces. Even such shared instances can be used in cds bind."}}],"history":[{"date":"2026-08-31","field":"core_coverage.state","from":"left-open-on-purpose","to":"core-and-community","reason":"States renamed to describe who is present rather than to interpret intent. left-open-on-purpose asserted a motive; core-and-community states a fact, with relationship carrying the intent separately."},{"date":"2026-09-14","field":"ecosystems","from":"cap","to":"cap, abap","reason":"abapDevSysInit sets up a new ABAP Developer Edition or trial system from one report: the user profile, the GitHub certificates and destination, abapGit standalone, and the repositories to pull."},{"date":"2026-09-27","field":"core_coverage.what_core_does","from":"cds watch with live reload and hybrid bindings","to":"cds watch, in-process mocks of imported services, cds mock","reason":"capire audit 2026-09-27: the Inner-Loop Development guide was cited nowhere."},{"date":"2026-09-27","field":"core_coverage","from":"without the page","to":"cites the page","reason":"capire audit 2026-09-27, judgement pages read once more: a page this capability owns was cited nowhere."},{"date":"2026-10-15","field":"core_coverage.where_it_stops","from":"It stops at the service. Anything in front of it — the approuter, the HTML5 repository, the routes a deployed app actually goes through — has to be stood up separately.","to":"The router as a documented second process, no local stand-in for the HTML5 application repository, and what a local run does not prove about authentication and the database.","reason":"capire documents starting the App Router locally, on the Hybrid Setup section of the Node.js authentication page: cds add approuter, then cds bind --exec -- npm start on port 5000 beside a CAP application running with the hybrid profile. The old sentence was right that it is a separate process and silent about the documentation, and it left out the boundary a reader needs, which is what the local stack does not reproduce: mocked authentication that is not for production, a mocked service with no data across its associations, and a database capire says is not fit for production."},{"date":"2026-10-15","field":"core_coverage.community_adds","from":null,"to":"dev-approuter, @neoimpulse/cap-js-bootstrap, the local HTML5 repository of @cap-js-community/common, @sang2x/captools","reason":"The door read core-and-community with no sentence saying what the community adds, so four options sat on the page with nothing placing them. Each is named for the part of the local stack its own documentation says it starts."},{"date":"2026-10-15","field":"coverage_by_flavor, framing_by_flavor","from":null,"to":"node and java assessed","reason":"The door's one reading described both runtimes at once, and the differences are documented and change what a developer does: on Node.js cds watch needs no build step and the in-memory SQLite database is auto-configured for the development profile, while on Java the watch goal restarts the whole application without Spring Boot Devtools, only works on Windows with them, needs the Spring security starter in the pom before mock users exist at all, and recommends H2."},{"date":"2026-10-15","field":"facets","from":null,"to":"local_stack_part, cloud_bindings, credentials_on_disk","reason":"Nine options answered this capability with nothing to compare them by, and they are not variants of one tool: the first question a reader has is which part of the local stack an option starts. The two flags separate the hybrid-testing helpers, where cds bind states that only the location of the credentials is stored on the machine and @sang2x/captools states that it writes the resolved VCAP_SERVICES into default-env.json."},{"date":"2026-10-26","field":"coverage_by_ecosystem.abap.community_adds","from":null,"to":"abapDevSysInit, abap_trial_docker, web-abap2UI5, abap2UI5 Playground, open-steamgate","reason":"Reassessed against the graph (check:capabilities): community providers behind the ABAP door arrived after the block was last looked at, and the block had no sentence placing them. The state stays core-and-community."},{"date":"2026-10-26","field":"coverage_by_flavor.java.note","from":"Who is present is read from what the options state: the two SAP packages state the java flavor, and no community option behind this door states a runtime at all, which is not the same as none of them running on it.","to":"(removed)","reason":"Reassessed against the graph (check:capabilities): the note counted providers and claimed an absence about who has built something, which goes stale as providers arrive."}],"coverage_by_ecosystem":{"abap":{"state":"core-and-community","assessed_at":"2026-09-14","what_core_does":"SAP publishes the ABAP Cloud Developer Trial as a Docker image, an AS ABAP with its SAP HANA database, free for education and demo purposes. Its ABAP license lasts three months and is renewed by importing a demo license into the container.","where_it_stops":"At a running system. What a developer then sets up inside it on every new container, a user profile, [abapGit](artifact:abapgit-abapgit), SSL certificates and a destination for GitHub, and the repositories to pull, is done by hand.","community_adds":"[abapDevSysInit](artifact:pokrakam-abapdevsysinit) scripts that setup inside a trial system, and [abap_trial_docker](artifact:marcellourbani-abap-trial-docker) builds the NetWeaver ABAP Developer Edition into a Docker container. [web-abap2UI5](artifact:abap2ui5-web-abap2ui5) and the [abap2UI5 Playground](artifact:abap2ui5-playground) run abap2UI5 transpiled to JavaScript in a browser tab with no ABAP system behind it, and [open-steamgate](artifact:oisee-open-steamgate) runs transpiled ABAP and the Gateway on the developer's machine.","sources":[{"url":"https://github.com/SAP-docs/abap-platform-trial-image","title":"SAP-docs/abap-platform-trial-image — README","checked":"2026-09-14","quote":"The ABAP license supplied with the Docker image lasts only three months."},{"url":"https://github.com/SAP-docs/abap-platform-trial-image","title":"SAP-docs/abap-platform-trial-image — README","checked":"2026-09-14","quote":"Since ABAP Cloud Developer Trial is a free offering for education and demo purposes only"}],"relationship":"unassessed"}},"framing_by_ecosystem":{"abap":{"description":"On the ABAP door the laptop runs a whole system: SAP's trial image is an application server and a database in one container, and a developer's own setup happens in that system after it starts, which is the part [abapDevSysInit](https://github.com/pokrakam/abapDevSysInit) by [Mike Pokraka](actor:pokrakam) scripts."}},"coverage_by_flavor":{"node":{"state":"core-and-community","assessed_at":"2026-10-15","what_core_does":"cds watch watches for changed files and restarts the Node.js server, and the artifacts a SQLite database needs are created as it runs, so a Node.js project needs no build step to prepare one. Authentication is the mocked strategy, basic authentication with the pre-defined mock users @sap/cds ships, and an imported remote service is mocked without being asked.","where_it_stops":"Mocked authentication is not suitable for production, so what a local run settles about authentication stops at the mock, and a mocked service returns no data across its associations until the imported model is extended by hand. The in-memory database is reset on each application start, so nothing a run writes outlives it.","community_adds":"[dev-approuter](artifact:ui5-community-dev-approuter) and [@neoimpulse/cap-js-bootstrap](artifact:neoimpulse-cap-js-bootstrap) start the router, the second with several services behind it, and the local HTML5 repository of [@cap-js-community/common](artifact:cap-js-community-common) serves the apps in the app folder from the file system.","relationship":"narrow-by-design","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-cli#cds-watch","title":"cds CLI — cds watch","checked":"2026-10-15","quote":"Use cds watch to watch for changed files, restarting your Node.js server."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire, Node.js setup","checked":"2026-10-15","quote":"The @cap-js/sqlite package uses the cds-plugin technique to auto-configure your application for using an in-memory SQLite database by default for the development profile."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire, no build step","checked":"2026-10-15","quote":"Node.js projects don't require any build steps to prepare SQLite usage."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire, in-memory databases","checked":"2026-10-15","quote":"They are fast, require no setup, are automatically reset on each application start, and minimize resource usage and costs."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, mocked strategy","checked":"2026-10-15","quote":"This authentication strategy uses basic authentication with pre-defined mock users during development."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, mocked authentication","checked":"2026-10-15","quote":"Mocked authentication is not suitable for production!"},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, automatic mocking","checked":"2026-10-15","quote":"The service is automatically mocked, as you can see in the log output on server start."},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, associations of a mocked service","checked":"2026-10-15","quote":"You can't get data from associations of a mocked service out of the box."}]},"java":{"state":"core-only","assessed_at":"2026-10-15","what_core_does":"mvn cds:watch, the watch goal of the CDS Maven plugin, does the CDS build and can start the application, and with Spring Boot Devtools on the project any change reloads the application context instead of restarting it. The runtime creates a security configuration that accepts mock users for test purposes, initialized only when the Spring Boot security starter is in the pom and set to disabled by the production profile, and H2 is the in-memory database capire recommends for local development and testing.","where_it_stops":"Without Devtools the watch goal performs a complete restart of the application after a CDS model change, which capire calls slower; on Windows the goal only works if they are enabled, and Devtools detects changes to .class files only. The local database is not the deployed one: CAP gives H2 no production support, and SQLite is to run with a connection pool of one, which serialises all database transactions.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, watch goal","checked":"2026-10-15","quote":"CDS Maven plugin also provide the goal watch that does CDS build and can start your application."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, Spring Boot Devtools","checked":"2026-10-15","quote":"Any change triggers an automatic application context reload without the need to manually restart the complete application."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, without Devtools","checked":"2026-10-15","quote":"In case your application doesn't use the Spring Boot Devtools, the watch goal performs a complete restart of the application after CDS model changes, which is slower."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, Windows","checked":"2026-10-15","quote":"On Windows, the watch goal only works if the Spring Boot Devtools are enabled."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, what Devtools detects","checked":"2026-10-15","quote":"Spring Boot Devtools only detects changes to .class files."},{"url":"https://cap.cloud.sap/docs/java/security","title":"Security (CAP Java) — capire, mock users","checked":"2026-10-15","quote":"By default, CAP Java creates a security configuration, which accepts mock users for test purposes."},{"url":"https://cap.cloud.sap/docs/java/security","title":"Security (CAP Java) — capire, when mock users exist","checked":"2026-10-15","quote":"Mock users are only initialized if the org.springframework.boot:spring-boot-starter-security dependency is present in the pom.xml file of your service."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/configuring","title":"Configuring Applications (CAP Java) — capire, production profile","checked":"2026-10-15","quote":"Mock Users are strictly disabled: cds.security.mock.enabled is set to false"},{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire, H2","checked":"2026-10-15","quote":"H2 is the recommended in-memory database for local development and testing with CAP Java."},{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire, H2 in production","checked":"2026-10-15","quote":"There's no production support for H2 from CAP"},{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire, SQLite concurrency","checked":"2026-10-15","quote":"SQLite has only limited support for concurrent database access. You're advised to limit the connection pool to *1* as shown above (parameter `maximum-pool-size: 1`), which effectively serializes all database transactions."}]}},"framing_by_flavor":{"node":{"description":"On Node.js the service runs from one command: cds watch compiles the model, creates the database artifacts as it goes, mocks the imported services and accepts the pre-defined mock users. What a developer adds to that is the router in front of it and a binding to a service in the cloud."},"java":{"description":"On Java the loop is a Maven build and a Spring Boot application: mvn cds:watch runs the CDS build and starts the application, and how a change is picked up depends on whether Spring Boot Devtools are on the project rather than on CAP. The in-memory database is H2, and the mock users come from the security configuration the runtime creates when the Spring Boot security starter is there."}},"facets":[{"key":"local_stack_part","label":"Part of the local stack it starts","kind":"many","values":["CAP service","App Router","HTML5 application repository"],"ecosystems":["cap"]},{"key":"cloud_bindings","label":"Binds cloud services","kind":"flag","ecosystems":["cap"]},{"key":"credentials_on_disk","label":"Credentials on disk","kind":"flag","ecosystems":["cap"]}],"drafted_with_ai":true},"sap_delivery":{"door":"cap","all":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ams-dev","name":"@sap/ams-dev","json":"/artifacts/sap-ams-dev.json"},{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json"},{"ref":"artifact:cap-java-cds-feature-dev-dashboard","name":"com.sap.cds:cds-feature-dev-dashboard","json":"/artifacts/cap-java-cds-feature-dev-dashboard.json"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json"}]},"by_flavor":{"node":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ams-dev","name":"@sap/ams-dev","json":"/artifacts/sap-ams-dev.json"},{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json"}]},"java":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-java-cds-feature-dev-dashboard","name":"com.sap.cds:cds-feature-dev-dashboard","json":"/artifacts/cap-java-cds-feature-dev-dashboard.json"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json"}]}}},"edges":{"use_cases":[{"id":"open-a-cap-application-through-its-router-on-a-laptop","name":"Open a CAP application through its router locally","capability":"capability:local-development","ecosystem":"cap","flavors":["node"],"outcome":"A developer opens the application on a laptop at the address the App Router serves, logs in through the real authentication flow, and reaches the CAP service and the UI modules behind it the way a deployed request would.","boundary":"Covers the routing and the login in front of the service. Starting the service itself is a separate outcome, and so is resolving the cloud bindings the router's authentication needs. Assessed on Node.js, where capire documents the local App Router setup; the same router in front of a CAP Java service was not assessed here.","origin":"Editorial hypothesis while re-assessing this capability's CAP coverage on 2026-10-15, from the boundary the door's own reading names: cds watch serves the service and nothing in front of it. Four indexed readings describe the same gap, which is why the task was written rather than dropped.","requirement_dimensions":["Whether the login goes through XSUAA or the SAP Identity service","Whether UI modules are served from the project or from an HTML5 application repository","How many services sit behind the one router","Whether the developer can keep several processes running"],"needs":[{"key":"local_stack_part","value":"App Router"}],"contributions":[{"ref":"artifact:sap-cds-dk","role":"the documented two-process setup","state":"conditional","conditions":["an XSUAA or SAP Identity service instance exists in the cloud and is bound with cds bind, since the credentials the router starts with come from that binding","the CAP application runs beside the router with the hybrid profile"],"description":"cds add approuter puts the router in the project, and cds bind --exec -- npm start starts it on port 5000 with the credentials of the bound XSUAA instance, with the service running beside it under the hybrid profile.","remaining_work":"Create the service instance and the service key in the cloud, bind them, and keep two processes running. The router itself needs no restart on a file change, since it serves static files or delegates to the backend service.","sources":[{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, running the App Router","checked":"2026-10-15","quote":"This starts an App Router instance on http://localhost:5000 with the credentials for the XSUAA service that you have bound using cds bind."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, the application beside it","checked":"2026-10-15","quote":"Make sure that your CAP application is running as well with the hybrid profile"},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, why it keeps running","checked":"2026-10-15","quote":"Since it only serves static files or delegates to the backend service, you can keep the server running."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, exec","checked":"2026-10-15","quote":"For example, you can run the App Router from an `approuter` child directory:"}]},{"ref":"artifact:ui5-community-dev-approuter","role":"the router as a development-time process","state":"documented","description":"Wraps the SAP Application Router for development time and serves the project's UI5 and CDS modules once they are added to it as dependencies, so the modules reach the router through the dependency list rather than through a route configuration.","remaining_work":"Add the modules as dependencies. The registry page carries no README, so what it expects of the environment around it is not documented here.","sources":[{"url":"https://www.npmjs.com/package/dev-approuter","title":"dev-approuter — npm, package description","checked":"2026-10-15","quote":"A dev time wrapper for the SAP Application Router that can serve UI5 and CDS modules added as dependencies."}]},{"ref":"artifact:neoimpulse-cap-js-bootstrap","role":"several services and the router from one command","state":"conditional","conditions":["Node.js 22 or newer, which the package states as its requirement","a binding the router's own start command can resolve, since it starts the router through cds bind --exec"],"description":"Starts a local CAP development environment of several services together with the App Router: cds watch per service, sequentially or in parallel, and the router through cds bind --exec -- npm start.","remaining_work":"Configure the services it is to start. The documentation is in German, and the repository declared in the package metadata returns 404, so the npm page is the only thing to read.","sources":[{"url":"https://www.npmjs.com/package/@neoimpulse/cap-js-bootstrap","title":"@neoimpulse/cap-js-bootstrap — npm, what it starts","checked":"2026-10-15","quote":"SICP-compliant CAP multi-service bootstrap — startet lokale SAP-CAP-Entwicklungsumgebungen mit mehreren Services plus AppRouter."},{"url":"https://www.npmjs.com/package/@neoimpulse/cap-js-bootstrap","title":"@neoimpulse/cap-js-bootstrap — npm, per service and router","checked":"2026-10-15","quote":"CAP-Services — `cds watch` pro Service, sequenziell oder parallel"},{"url":"https://www.npmjs.com/package/@neoimpulse/cap-js-bootstrap","title":"@neoimpulse/cap-js-bootstrap — npm, Node.js requirement","checked":"2026-10-15","quote":"Node.js ≥ 22"}]},{"ref":"artifact:cap-js-community-common","role":"the HTML5 application repository behind the router","state":"conditional","conditions":["a default-env.json in the approuter folder holds a valid HTML5 repository configuration from the deployment environment","the app or library sits in the app folder and contains a ui5.yaml, which is what the local repository picks up"],"description":"Serves the apps and libraries of the project's app folder from the local file system as the HTML5 repository the router asks, and proxies every other request to the remote HTML5 repository, so a UI change is tested behind the router without being deployed first.","remaining_work":"Write the configuration file and run the local-html5-repo command beside the router. The package is a bundle, so depending on it for this one feature brings its other five.","sources":[{"url":"https://github.com/cap-js-community/common/blob/main/README.md","title":"CAP Node.js Community Common — Local HTML5 Repository","checked":"2026-10-15","quote":"Developing HTML5 apps against hybrid environments including Approuter component requires a local HTML5 repository to directly test the changes to UI5 applications without deployment to a remote HTML5 repository."},{"url":"https://github.com/cap-js-community/common/blob/main/README.md","title":"CAP Node.js Community Common — Local HTML5 Repository, what it serves","checked":"2026-10-15","quote":"All apps and libraries located in `app` folder and containing an `ui5.yaml` are redirected to local HTML5 repository served from local file system. All other requests are proxied to the remote HTML5 repository."}]}],"readings":[{"ref":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","relevance":"The two processes as a task definition, with the tasks.json in the post, written because cds watch serves the service and the app folder and not the router.","flavors":["node"],"shows":["artifact:sap-cds-dk"]},{"ref":"content:using-the-sap-approuter-at-dev-time","relevance":"Part one of a route to the same place from the UI5 side, getting the tooling and the CAP server onto one port before the router goes in front.","flavors":["node"]},{"ref":"content:xsuaa-local-testing","relevance":"The half the router exists for: getting the authorization to behave on a laptop rather than only after a deployment.","flavors":["node"]},{"ref":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","relevance":"Names the HTML5 repository hurdle directly: a Fiori front end served from the repository needs a local stand-in to reach a local back end at all.","flavors":["node"]}],"unknowns":["Whether dev-approuter resolves cloud service bindings itself or expects an environment prepared beside it is not established: the package has no README on its registry page.","Whether the local HTML5 repository works behind dev-approuter as well as behind the router started from the project was not established; its README describes the Approuter component without naming a wrapper."],"assessed_at":"2026-10-15","drafted_with_ai":true,"omitted_contributions":0,"assessment_kind":"documented-contributions"},{"id":"pick-up-a-cds-model-change-without-restarting-by-hand","name":"Pick up a CDS model change without restarting by hand","capability":"capability:local-development","ecosystem":"cap","flavors":["node","java"],"outcome":"A developer edits a CDS file or a handler and the running service answers the next request against the changed model, without stopping and starting it.","boundary":"Covers the loop between a saved file and a served request. Attaching a debugger to that process is [debugging](capability:debugging), and what the service is bound to while it runs is a separate outcome.","origin":"Editorial hypothesis while re-assessing this capability's CAP coverage on 2026-10-15. The two runtimes answer this with the same command name and different mechanics, and the Java side carries conditions capire states outright, including one that depends on the operating system.","requirement_dimensions":["Whether the application runs on Node.js or Java","Whether Spring Boot Devtools are on a Java project","Which operating system the developer works on","Whether seed data files are edited while the service runs"],"contributions":[{"ref":"artifact:sap-cds-dk","role":"the watch loop (Node.js)","state":"documented","flavors":["node"],"description":"cds watch watches for changed files and restarts the Node.js server, so the next request is served against the saved model.","remaining_work":"Nothing beyond running it. The restart follows any changed file the project holds, seed data included, which is the loop working as documented rather than a setting.","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-cli#cds-watch","title":"cds CLI — cds watch","checked":"2026-10-15","quote":"Use cds watch to watch for changed files, restarting your Node.js server."}]},{"ref":"artifact:cap-java-cds-maven-plugin","role":"the watch loop (Java)","state":"conditional","flavors":["java"],"conditions":["Spring Boot Devtools are on the project, without which the goal performs a complete restart of the application after a CDS model change, which capire calls slower","on Windows the watch goal only works if the Spring Boot Devtools are enabled"],"description":"The watch goal runs the CDS build and starts the application, and with Devtools on the project it takes advantage of their reload mechanism, where any change reloads the application context instead of restarting the whole application.","remaining_work":"Add the Devtools dependency, and the plugin group com.sap.cds to ~/.m2/settings.xml for the short mvn cds:watch form. Devtools detects changes to .class files only, so a change to Java code is picked up once the build has produced them.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, watch goal","checked":"2026-10-15","quote":"CDS Maven plugin also provide the goal watch that does CDS build and can start your application."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, the reload mechanism","checked":"2026-10-15","quote":"When you add the Spring Boot Devtools to your project, the watch goal can take advantage of the reload mechanism."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, without Devtools","checked":"2026-10-15","quote":"In case your application doesn't use the Spring Boot Devtools, the watch goal performs a complete restart of the application after CDS model changes, which is slower."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, Windows","checked":"2026-10-15","quote":"On Windows, the watch goal only works if the Spring Boot Devtools are enabled."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, what Devtools detects","checked":"2026-10-15","quote":"Spring Boot Devtools only detects changes to .class files."}]}],"readings":[{"ref":"content:avoid-design-time-cap-server-restarts-with-local-data-files","relevance":"The case where the restart is the problem rather than the feature: editing a CSV seed file restarts the server against half-finished data, and the post suppresses that without giving up the watch loop.","flavors":["node"]},{"ref":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","relevance":"What the same loop costs to set up once TypeScript and a Fiori front end are in the project, recorded as the commands and files in order.","flavors":["node"]}],"unknowns":["Whether the auto-build goal with a Devtools trigger file picks a change up faster than the watch goal is not established. Capire states that auto-build reacts on any CDS file change and can touch the trigger file, and compares neither.","Whether a CAP Java application started from the IDE rather than from Maven reaches the same loop was not assessed here."],"assessed_at":"2026-10-15","drafted_with_ai":true,"omitted_contributions":0,"assessment_kind":"documented-contributions"},{"id":"run-a-cap-service-against-a-cloud-service-instance-from-a-laptop","name":"Run a CAP service against a cloud service instance","capability":"capability:local-development","ecosystem":"cap","flavors":["node","java"],"outcome":"A service running on a laptop reads and writes through a service instance that exists in the cloud — a database, a destination, an authentication service — instead of through the local substitute, with nothing deployed.","boundary":"Covers how the local process comes to hold the instance's credentials and what kinds of instance can be reached. The network path to a system behind a firewall is connectivity rather than binding, and the router's login flow is its own outcome.","origin":"Editorial hypothesis while re-assessing this capability's CAP coverage on 2026-10-15. Two of this capability's options answer the same wish with opposite handling of the credentials, which is the difference a reader has to see before choosing.","requirement_dimensions":["Whether the instance is managed, user-provided or shared into the space","Whether the platform is Cloud Foundry or Kubernetes","Whether the application runs on Node.js or Java","Whether credentials may be written into a file in the project"],"needs":[{"key":"cloud_bindings"}],"contributions":[{"ref":"artifact:sap-cds-dk","role":"the binding and the profile","state":"conditional","conditions":["the developer is logged in to the target Cloud Foundry space or Kubernetes cluster, which is where cds bind resolves the instance from","the same profile name is used to create the binding and to run, since bindings are assigned to the hybrid profile by default"],"description":"cds bind records where the credentials can be obtained rather than the credentials themselves, and reaches a managed, a user-provided or a shared Cloud Foundry instance as well as a Kubernetes service binding or a plain secret. The run then starts under that profile: cds watch --profile hybrid on Node.js, and cds bind --exec mvn spring-boot:run for a CAP Java application.","remaining_work":"Create the instance and its service key in the cloud and keep the profile name consistent. The binding is resolved when the process starts, so a service only reachable through a tunnel still needs the tunnel.","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind","checked":"2026-10-15","quote":"Hybrid testing capabilities help you stay in a local development environment and avoid long turnaround times of cloud deployments, by selectively connecting to services in the cloud."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, where the credentials stay","checked":"2026-10-15","quote":"Only the information about where the credentials can be obtained is stored on your machine."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, the profile","checked":"2026-10-15","quote":"Bindings are assigned to the `hybrid` profile by default."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, Kubernetes","checked":"2026-10-15","quote":"You can bind to Service Bindings of Open Service Broker service instances, such as SAP BTP services, on your Kubernetes cluster and to plain Kubernetes Secrets"},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, shared instances","checked":"2026-10-15","quote":"On SAP BTP Cloud Foundry, service instances can be shared across orgs and spaces."},{"url":"https://cap.cloud.sap/docs/tools/cds-bind","title":"Hybrid Testing — cds bind, CAP Java","checked":"2026-10-15","quote":"cds bind --exec mvn spring-boot:run"}]},{"ref":"artifact:sang2x-captools","role":"the binding and the run behind one command","state":"conditional","conditions":["the target is a Cloud Foundry space with the application already deployed, since the command reads the bound services of an app","the resolved VCAP_SERVICES may be written into default-env.json in the project"],"description":"bind-local binds the local project to the services of a Cloud Foundry application and writes the resulting VCAP_SERVICES into default-env.json; run-local chains that behind one command with the install step and cds watch --profile hybrid.","remaining_work":"Keep the written file out of the repository, and read the published dist to know what a command does: there is no repository and no README.","sources":[{"url":"https://cdn.jsdelivr.net/npm/@sang2x/captools@0.7.0/dist/commands/local.js","title":"@sang2x/captools 0.7.0 — local command","checked":"2026-10-15","quote":"Bind local CAP service to Cloud Foundry app services and write default-env.json"},{"url":"https://cdn.jsdelivr.net/npm/@sang2x/captools@0.7.0/dist/commands/run-local.js","title":"@sang2x/captools 0.7.0 — run-local command","checked":"2026-10-15","quote":"Run npmrc → install → bind-local → cds watch --profile hybrid"}]}],"readings":[{"ref":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","relevance":"The binding itself as the subject: what cds bind writes, and what has to be true of the service instance and the tunnel for a local process to reach it.","flavors":["node"],"shows":["artifact:sap-cds-dk"]},{"ref":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","relevance":"A short note that the same profile reaches a PostgreSQL instance, against the assumption that hybrid testing means SAP HANA.","flavors":["node"]},{"ref":"content:use-the-destination-service-in-nodejs-locally","relevance":"The destination case, where the environment variable the service normally provides does not exist on a laptop.","flavors":["node"]},{"ref":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","relevance":"The part a binding does not solve: the connectivity proxy is reachable from inside SAP BTP, so an on-premise system needs a tunnel arranged as well.","flavors":["node"]},{"ref":"content:call-a-remote-odata-api-from-a-local-cap-java-project","relevance":"The Java side of the same outcome, run to a concrete finish line: a localhost URL that returns business partners from a remote API.","flavors":["java"]},{"ref":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","relevance":"The same problem four years earlier, which is what makes the binding mechanics worth dating rather than assuming."}],"unknowns":["Whether @sang2x/captools reaches a Kubernetes service binding as cds bind does is not established: the package has no README, and only the Cloud Foundry path is readable from the published dist.","Which kinds of instance a CAP Java run reaches through cds bind --exec was not separately established; the page documents the exec form for Java and lists the instance kinds without scoping them per runtime."],"assessed_at":"2026-10-15","drafted_with_ai":true,"omitted_contributions":0,"assessment_kind":"documented-contributions"},{"id":"start-a-cap-service-on-a-laptop-with-nothing-bound","name":"Start a CAP service with nothing bound","capability":"capability:local-development","ecosystem":"cap","flavors":["node","java"],"outcome":"A CAP project whose model imports a remote service and whose endpoints are authenticated starts, serves and answers requests on a laptop with no service instance bound, no database provisioned and no upstream system reachable.","boundary":"Covers what answers in place of the database, the identity provider and the imported service. Reaching a real instance of any of them from the same laptop is hybrid testing and is assessed separately, and what the router in front adds is its own outcome.","origin":"Editorial hypothesis while re-assessing this capability's CAP coverage on 2026-10-15. The three substitutes a first run leans on are documented on three different pages, and two of them carry a condition on the Java side that the Node.js side does not have.","requirement_dimensions":["Whether the application runs on Node.js or Java","Whether the imported service's associations are read","Whether anything a run writes has to survive the next start","Whether authorization is being developed, or only passed through"],"contributions":[{"ref":"artifact:sap-cds","role":"core runtime (Node.js)","state":"documented","flavors":["node"],"description":"Mocks every imported service in process with mock data in the same in-memory database as the project's own data, and authenticates with the pre-defined mock users of its mocked strategy, so a first run needs nothing bound to it.","remaining_work":"Supply the mock data as CSV under srv/external/data. An association of a mocked service returns no data until the imported model is extended by hand, and the mocked users say nothing about how the deployed application will authenticate.","sources":[{"url":"https://cap.cloud.sap/docs/guides/integration/inner-loops","title":"Inner-Loop Development — capire","checked":"2026-09-27","quote":"CAP mocks imported services automatically in-process with mock data in the same in-memory database as our own data."},{"url":"https://cap.cloud.sap/docs/node.js/authentication","title":"Authentication (Node.js) — capire, mocked strategy","checked":"2026-10-15","quote":"This authentication strategy uses basic authentication with pre-defined mock users during development."},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, associations of a mocked service","checked":"2026-10-15","quote":"You can't get data from associations of a mocked service out of the box."}]},{"ref":"artifact:sap-cds-dk","role":"the command that starts it","state":"documented","flavors":["node"],"description":"cds watch starts the server and the artifacts the in-memory SQLite database needs are created as it runs, with no build step in a Node.js project; cds mock runs the imported service in a separate process where one process is too far from the target setup.","remaining_work":"Nothing beyond running it. The database is reset on each application start, so seed data is the only data a fresh run has.","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-cli#cds-watch","title":"cds CLI — cds watch","checked":"2026-10-15","quote":"Use cds watch to watch for changed files, restarting your Node.js server."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire, no build step","checked":"2026-10-15","quote":"Node.js projects don't require any build steps to prepare SQLite usage."},{"url":"https://cap.cloud.sap/docs/guides/databases/sqlite","title":"Using SQLite for Development — capire, in-memory databases","checked":"2026-10-15","quote":"They are fast, require no setup, are automatically reset on each application start, and minimize resource usage and costs."},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, a separate process","checked":"2026-10-15","quote":"For a more realistic testing, let the mocked service run in a separate process."}]},{"ref":"artifact:cap-java-cds-services-bom","role":"core runtime (Java)","state":"conditional","flavors":["java"],"conditions":["the Spring Boot security starter is in the project's pom.xml, without which the mock users are not initialized at all","the production profile is not the active one, since it sets cds.security.mock.enabled to false"],"description":"The runtime creates a security configuration that accepts mock users for test purposes, and H2 is the in-memory database capire recommends for a local run, automatically initialized in memory by Spring when it is on the classpath.","remaining_work":"Add the security starter and the database to the project and configure the datasource. A mocked remote entity has no tables until the schema is generated with the --with-mocks option on cds deploy.","sources":[{"url":"https://cap.cloud.sap/docs/java/security","title":"Security (CAP Java) — capire, mock users","checked":"2026-10-15","quote":"By default, CAP Java creates a security configuration, which accepts mock users for test purposes."},{"url":"https://cap.cloud.sap/docs/java/security","title":"Security (CAP Java) — capire, when mock users exist","checked":"2026-10-15","quote":"Mock users are only initialized if the org.springframework.boot:spring-boot-starter-security dependency is present in the pom.xml file of your service."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/configuring","title":"Configuring Applications (CAP Java) — capire, production profile","checked":"2026-10-15","quote":"Mock Users are strictly disabled: cds.security.mock.enabled is set to false"},{"url":"https://cap.cloud.sap/docs/java/cqn-services/persistence-services","title":"Persistence Services (CAP Java) — capire, H2","checked":"2026-10-15","quote":"H2 is the recommended in-memory database for local development and testing with CAP Java."},{"url":"https://cap.cloud.sap/docs/guides/services/consuming-services","title":"Consuming Services — capire, the Java condition for a mocked service","checked":"2026-10-15","quote":"For Java, make sure to add the --with-mocks option to the cds deploy command used to generate the schema.sql."}]},{"ref":"artifact:cap-java-cds-maven-plugin","role":"the command that starts it (Java)","state":"documented","flavors":["java"],"description":"The watch goal runs the CDS build and starts the application, which is how a Java project gets from a checked-out model to a served endpoint without a deployment.","remaining_work":"Add the plugin group com.sap.cds to ~/.m2/settings.xml for the short mvn cds:watch form, and generate the SQLite or H2 schema in the build where the local database needs one.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, watch goal","checked":"2026-10-15","quote":"CDS Maven plugin also provide the goal watch that does CDS build and can start your application."},{"url":"https://cap.cloud.sap/docs/java/developing-applications/running","title":"Running Applications (CAP Java) — capire, plugin group","checked":"2026-10-15","quote":"To be able to use mvn cds:watch instead of mvn com.sap.cds:cds-maven-plugin:watch add the plugin group com.sap.cds to your local ~/.m2/settings.xml"}]}],"readings":[{"ref":"content:sap-tutorial-cap-mocking-auth","relevance":"The mocked users as the thing to develop authorization against from the first commit, rather than as a placeholder to replace later.","flavors":["node"],"shows":["artifact:sap-cds"]},{"ref":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","relevance":"Names the association limit from the other side: a mocked service returns nothing across an association until the ON clause is written into the imported CDS by hand. The same page carries the two hurdles this outcome's boundary points at, the on-premise proxy and the HTML5 repository.","flavors":["node"]},{"ref":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","relevance":"A whole back end built against SQLite on a laptop with no cloud database in sight, which is this outcome carried through an application rather than a paragraph.","flavors":["node"]},{"ref":"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults","relevance":"What CAP assumed on a first run, which is the list of substitutes this outcome depends on."}],"unknowns":["Whether the CAP Java runtime mocks an imported remote service in process as the Node.js runtime does is not established here. The Java Remote Services page, read on 2026-10-15, does not mention mocking, and the cross-runtime guide states only the Java condition for generating the schema.","Whether an H2 datasource is configured by capire's CAP Java setup without the application adding it was not settled: the page read states that Spring initializes H2 in memory when it is present on the classpath, which is a statement about the classpath rather than about the project template."],"assessed_at":"2026-10-15","drafted_with_ai":true,"omitted_contributions":0,"assessment_kind":"documented-contributions"}],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:cap-js-community-common","name":"@cap-js-community/common","json":"/artifacts/cap-js-community-common.json","ecosystem":"cap","origin_ring":"community-org"},{"ref":"artifact:neoimpulse-cap-js-bootstrap","name":"@neoimpulse/cap-js-bootstrap","json":"/artifacts/neoimpulse-cap-js-bootstrap.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:sang2x-captools","name":"@sang2x/captools","json":"/artifacts/sang2x-captools.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:sap-ams-dev","name":"@sap/ams-dev","json":"/artifacts/sap-ams-dev.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:marcellourbani-abap-trial-docker","name":"abap_trial_docker","json":"/artifacts/marcellourbani-abap-trial-docker.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:abap2ui5-playground","name":"abap2UI5 Playground","json":"/artifacts/abap2ui5-playground.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:cap-java-cds-feature-dev-dashboard","name":"com.sap.cds:cds-feature-dev-dashboard","json":"/artifacts/cap-java-cds-feature-dev-dashboard.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:ui5-community-dev-approuter","name":"dev-approuter","json":"/artifacts/ui5-community-dev-approuter.json","ecosystem":"cap","origin_ring":"community-org"},{"ref":"artifact:oisee-open-steamgate","name":"open-steamgate","json":"/artifacts/oisee-open-steamgate.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:pokrakam-abapdevsysinit","name":"pokrakam/abapDevSysInit","json":"/artifacts/pokrakam-abapdevsysinit.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:akatuoro-vite-plugin-cds","name":"vite-plugin-cds","json":"/artifacts/akatuoro-vite-plugin-cds.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:abap2ui5-web-abap2ui5","name":"web-abap2UI5","json":"/artifacts/abap2ui5-web-abap2ui5.json","ecosystem":"abap","origin_ring":"community-org"}],"samples":[{"ref":"artifact:ui5-community-showcase-approuter","name":"approuter","json":"/artifacts/ui5-community-showcase-approuter.json"},{"ref":"artifact:miyasuta-cap-java-resilience","name":"cap-java-resilience","json":"/artifacts/miyasuta-cap-java-resilience.json"},{"ref":"artifact:miyasuta-cap-java-snippets","name":"cap-java-snippets","json":"/artifacts/miyasuta-cap-java-snippets.json"},{"ref":"artifact:sap-samples-cap-nodejs-dev-env","name":"cap-nodejs-dev-env","json":"/artifacts/sap-samples-cap-nodejs-dev-env.json"},{"ref":"artifact:vcd94xt10z-forsap-s4hana-private-simulator","name":"forsap-s4hana-private-simulator","json":"/artifacts/vcd94xt10z-forsap-s4hana-private-simulator.json"},{"ref":"artifact:sap-samples-cap-local-development-workshop","name":"SAP-samples/cap-local-development-workshop","json":"/artifacts/sap-samples-cap-local-development-workshop.json"},{"ref":"artifact:sap-samples-cap-tour-hands-on","name":"SAP-samples/cap-tour-hands-on","json":"/artifacts/sap-samples-cap-tour-hands-on.json"},{"ref":"artifact:marianfoo-ui5con24-dev-env","name":"ui5con24-dev-env","json":"/artifacts/marianfoo-ui5con24-dev-env.json"}],"explained_by":[{"ref":"content:fullstack-cap-with-hana-cloud-part-1-local-with-sqlite","name":"Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]","json":"/content/fullstack-cap-with-hana-cloud-part-1-local-with-sqlite.json"},{"ref":"content:unlocking-mcp-servers-in-bas-right-now","name":"Don't Wait for SAP: Unlocking MCP Servers in BAS Right Now","json":"/content/unlocking-mcp-servers-in-bas-right-now.json"},{"ref":"content:connectivity-between-a-local-cap-runtime-and-on-premise-systems","name":"Establishing connectivity between a local CAP runtime and on-premise systems","json":"/content/connectivity-between-a-local-cap-runtime-and-on-premise-systems.json"},{"ref":"content:creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas","name":"Creating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application Studio","json":"/content/creating-a-hybrid-cap-nodejs-profile-with-postgresql-from-bas.json"},{"ref":"content:cap-with-local-app-previews","name":"CAP with Local App Previews – Tips for Smooth Development","json":"/content/cap-with-local-app-previews.json"},{"ref":"content:call-a-remote-odata-api-from-a-local-cap-java-project","name":"How to Call a Remote OData API from Your Local CAP Java Project","json":"/content/call-a-remote-odata-api-from-a-local-cap-java-project.json"},{"ref":"content:fixing-the-npm-notarget-error-for-sap-hdi-deploy","name":"How to fix npm error notarget @sap/hdi-deploy when you create a CAP app in BAS","json":"/content/fixing-the-npm-notarget-error-for-sap-hdi-deploy.json"},{"ref":"content:remote-debugging-of-a-capm-nodejs-app","name":"Remote Debugging of SAP CAPM App - Nodejs","json":"/content/remote-debugging-of-a-capm-nodejs-app.json"},{"ref":"content:capm-basics-part-4","name":"CAPM Basics - Part 4","json":"/content/capm-basics-part-4.json"},{"ref":"content:cap-lessons-learned-sqlite-is-single-threaded-hana-is-not","name":"SAP CAP Lessons Learned: SQLite is single threaded, HANA is not","json":"/content/cap-lessons-learned-sqlite-is-single-threaded-hana-is-not.json"},{"ref":"content:my-cap-projects-toolbox","name":"My CAP Projects Toolbox","json":"/content/my-cap-projects-toolbox.json"},{"ref":"content:cap-for-nodejs","name":"CAP for nodejs安全的暴露接口练习","json":"/content/cap-for-nodejs.json"},{"ref":"content:xsuaa-local-testing","name":"XSUAA Local Testing","json":"/content/xsuaa-local-testing.json"},{"ref":"content:avoid-design-time-cap-server-restarts-with-local-data-files","name":"Avoid design time CAP server restarts when maintaining local data files","json":"/content/avoid-design-time-cap-server-restarts-with-local-data-files.json"},{"ref":"content:develop-cap-project-with-lazyvim-in-docker","name":"Develop CAP Project with Lazyvim in Docker","json":"/content/develop-cap-project-with-lazyvim-in-docker.json"},{"ref":"content:cds-launchpad-plugin-supercharged","name":"cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpad","json":"/content/cds-launchpad-plugin-supercharged.json"},{"ref":"content:cap-postgresql-local-debugging-using-docker-part-2","name":"CAP PostgreSql setup local debugging using Docker - Part 2","json":"/content/cap-postgresql-local-debugging-using-docker-part-2.json"},{"ref":"content:using-the-sap-approuter-at-dev-time","name":"SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP","json":"/content/using-the-sap-approuter-at-dev-time.json"},{"ref":"content:hybrid-testing-using-postgresql-on-btp-hyperscaler-option","name":"Hybrid testing using PostgreSQL on SAP BTP, hyperscaler option","json":"/content/hybrid-testing-using-postgresql-on-btp-hyperscaler-option.json"},{"ref":"content:the-fastest-way-to-run-full-stack-applications-in-bas","name":"The fastest and easiest way to run full-stack applications in SAP Business Application Studio","json":"/content/the-fastest-way-to-run-full-stack-applications-in-bas.json"},{"ref":"content:cap-typescript-fiori-typescript-and-live-reload-initial-setup","name":"CAP Typescript + Fiori Typescript + live reload Initial app setup","json":"/content/cap-typescript-fiori-typescript-and-live-reload-initial-setup.json"},{"ref":"content:surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de","name":"Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdles","json":"/content/surviving-and-thriving-with-the-sap-cloud-application-programming-model-local-de.json"},{"ref":"content:how-to-connect-to-remote-services-locally-in-a-cap-application","name":"BTP CAP : How to Connect to Remote Services Locally in CAP Application","json":"/content/how-to-connect-to-remote-services-locally-in-a-cap-application.json"},{"ref":"content:cap-cds-and-fiori-practical-commands","name":"加速开发和部署的CAP CDS和Fiori一些实用命令","json":"/content/cap-cds-and-fiori-practical-commands.json"},{"ref":"content:a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview","name":"A Fiori Launchpad Sandbox for all your CAP-based projects - Overview","json":"/content/a-fiori-launchpad-sandbox-for-all-your-cap-based-projects-overview.json"},{"ref":"content:a-fiori-launchpad-sandbox-sample-project-setup","name":"A Fiori Launchpad Sandbox for all your CAP-based projects – Sample project setup","json":"/content/a-fiori-launchpad-sandbox-sample-project-setup.json"},{"ref":"content:vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser","name":"Use Tasks in Visual Studio Code to start a cds service, an approuter and launch a browser in one go","json":"/content/vs-code-tasks-to-start-a-cds-service-an-approuter-and-a-browser.json"},{"ref":"content:sap-cloud-application-programming-model-cap-part-1","name":"SAP Cloud Application Programming Model（CAP）：概要およびデモ - Part 1","json":"/content/sap-cloud-application-programming-model-cap-part-1.json"},{"ref":"content:running-cap-node-applications-in-bas-run-configurations","name":"Running CAP Node Applications in SAP Business Application Studio","json":"/content/running-cap-node-applications-in-bas-run-configurations.json"},{"ref":"content:use-the-destination-service-in-nodejs-locally","name":"Use SCP CF Destination service in NodeJs locally","json":"/content/use-the-destination-service-in-nodejs-locally.json"},{"ref":"content:develop-sap-cap-apps-inside-a-vs-code-docker-container","name":"Develop SAP CAP apps inside a VS Code Docker Container","json":"/content/develop-sap-cap-apps-inside-a-vs-code-docker-container.json"},{"ref":"content:set-up-vs-code-on-chrome-os-for-local-cap-development","name":"Set up VS Code on Chrome OS for local Application Programming Model development","json":"/content/set-up-vs-code-on-chrome-os-for-local-cap-development.json"},{"ref":"content:sap-group-create-a-simple-cap-application-and-explore-the-defaults","name":"Create a Simple CAP Application and Explore the Defaults","json":"/content/sap-group-create-a-simple-cap-application-and-explore-the-defaults.json"},{"ref":"content:sap-tutorial-cap-intro-to-repl","name":"Get an introduction to the cds REPL","json":"/content/sap-tutorial-cap-intro-to-repl.json"},{"ref":"content:sap-tutorial-cap-mocking-auth","name":"Use mocking to embrace auth in your domain model from the outset","json":"/content/sap-tutorial-cap-mocking-auth.json"},{"ref":"content:sap-tutorial-cap-self-contained-dev-env","name":"Set up a self-contained development environment for CAP Node.js","json":"/content/sap-tutorial-cap-self-contained-dev-env.json"}],"normative_context":[]}}