{"ref":"artifact:marianfoo-ui5-fe-mockserver-tutorial","page":"/artifacts/marianfoo-ui5-fe-mockserver-tutorial","json":"/artifacts/marianfoo-ui5-fe-mockserver-tutorial.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"marianfoo-ui5-fe-mockserver-tutorial","name":"ui5-fe-mockserver-tutorial","artifact_type":"sample","ecosystem":"ui5","flavors":[{"key":"fiori-elements","source":{"url":"https://github.com/marianfoo/ui5-fe-mockserver-tutorial","title":"marianfoo/ui5-fe-mockserver-tutorial — README, Fiori Application Prerequisites","checked":"2026-10-19","quote":"This tutorial is based on **Fiori Elements List Report & Object Page** applications."}}],"domain":"developer-experience","origin_ring":"independent","use_as":"reference","description":{"one_line":"Ten exercises on `@sap-ux/ui5-middleware-fe-mockserver`, published for Devtoberfest 2025 as a repository to clone and a site to read, each exercise a Fiori elements app served from mock data instead of a backend.","short":"Ten exercises on the Fiori elements mock server middleware","what_it_solves":"Serving a Fiori elements app with no backend behind it means configuring the mockserver, and the ten exercises go through that one step at a time: data generated from the metadata, then custom JSON files, then JavaScript handlers that compute data and implement actions, then several services at once, then a write from one service's action handler into another's entity set, then per-tenant datasets and HTTP error responses. Exercise 8 drives the offline app end to end with [wdi5](artifact:ui5-community-wdi5), exercise 9 records live OData traffic with [ui5-middleware-odata-recorder](artifact:marianfoo-ui5-middleware-odata-recorder), and exercise 10 generates TypeScript types from the metadata with `@sap-ux/fe-mockserver-admin`. Each exercise is its own folder on its own port, and the first one makes a generated app offline by taking out the backend configuration the Fiori generator writes into `ui5-mock.yaml`, which otherwise routes requests past the mockserver. Setting the exercises up reads from a live service, so the CAP books service in [ui5-call-action](artifact:marianfoo-ui5-call-action) has to be running on `http://localhost:4004`, and the middleware being taught is SAP's, published from [SAP/open-ux-odata](https://github.com/SAP/open-ux-odata)."},"links":{"repo":"https://github.com/marianfoo/ui5-fe-mockserver-tutorial","homepage":"https://marianfoo.github.io/ui5-fe-mockserver-tutorial/"},"compat":{"runtimes":["node"]},"type_properties":{"form":{"value":"tutorial","sources":[{"url":"https://raw.githubusercontent.com/marianfoo/ui5-fe-mockserver-tutorial/main/README.md","title":"ui5-fe-mockserver-tutorial — README","checked":"2026-10-19","quote":"Tutorial for using `@sap-ux/ui5-middleware-fe-mockserver` in SAP Fiori development."}]}},"requires":[{"ref":"artifact:marianfoo-ui5-call-action","for":"The CAP project whose BookshopService and ReviewsService the exercises read from: it supplies the metadata the apps are generated against, the data exercise 9 records, and the two service paths exercise 4 configures side by side.","requirement":"required","sources":[{"url":"https://raw.githubusercontent.com/marianfoo/ui5-fe-mockserver-tutorial/main/README.md","title":"ui5-fe-mockserver-tutorial — README, CAP Backend Service Setup","checked":"2026-10-19","quote":"Keep the service running throughout this tutorial - the mockserver exercises will connect to these real services."}]}],"demonstrates":["capability:ui5-testing","capability:ui5-build-tooling"],"maintainers":["actor:marianfoo"],"source_available":true,"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:github-orgs","channel":"marianfoo"}],"first_seen":"2026-09-25"},"history":[{"date":"2026-09-25","field":"entry","from":null,"to":"created","reason":"Sample with use_as reference, following artifact:sap-samples-manage-apis-codejam: a repository of exercises is evidence that something works and never an option to depend on. It demonstrates capability:ui5-testing because that capability's core coverage already names \"an OData V2 mock server for a backend stand-in\" as what SAP ships, and capability:ui5-build-tooling because the mockserver is registered as UI5 Tooling custom middleware in ui5-mock.yaml. compat.runtimes is the README's Required Tools, \"**Node.js** (20 LTS or higher)\". @sap-ux/ui5-middleware-fe-mockserver, the middleware being taught, has no entry of its own, so it stands in the prose as a code span and the README's own pointer to SAP/open-ux-odata is linked out. No licence is stated anywhere in the repository, so identity is absent."},{"date":"2026-10-19","field":"type_properties","from":null,"to":"form","reason":"form is tutorial, on the README's first line: \"Tutorial for using `@sap-ux/ui5-middleware-fe-mockserver` in SAP Fiori development.\" The repository was published for Devtoberfest 2025 and the SAP Community post the README links calls it a tutorial from Devtoberfest, so workshop was considered and left out: form is one value, and what this presents itself as is a tutorial with exercise folders, not CodeJam material."},{"date":"2026-10-19","field":"requires","from":null,"to":"artifact:marianfoo-ui5-call-action","reason":"The README's Prerequisites tell the reader to clone and run that CAP project before starting, and the fact was already in what_it_solves with no edge under it. artifact:marianfoo-ui5-call-action was a pending draft when this entry was written and is published now, so the plain link in the prose became a graph link in the same pass, as did ui5-middleware-odata-recorder."}],"contributors":["actor:marianfoo","actor:nlunets"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors"},{"label":"Repository","tier":"fair","evidence":"pushed 2025-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"Deploy static content to Pages green, 2025-10-30"}],"practice":[{"label":"Tests","tier":"good","evidence":"103 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 13 pages, README 48 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":8,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":8,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2025-10-30","license_spdx":null,"org_owned":false,"default_branch":"main","created_at":"2025-09-12T12:26:10Z","open_prs":0,"tree_truncated":false,"test_files":103,"workflows":1,"other_ci":false,"readme_bytes":49284,"docs_files":13,"changelog":false,"license_file":false,"dts_files":1,"first_commit":"2025-09-12","last_commit":"2025-10-30","commits":2,"contributors":2,"ci_status":"success","ci_run_at":"2025-10-30","ci_workflow":"Deploy static content to Pages","ci_event":"push","readme_path":"README.md","readme_sha":"9970fdb5db82ae7b23090c5df05a9cd8e97bd16c","repo_read":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"}],"contributors":[{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"},{"ref":"actor:nlunets","name":"Nicolas Lunet","json":"/actors/nlunets.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}