{"ref":"artifact:sap-samples-e-mobility-driver-app","page":"/artifacts/sap-samples-e-mobility-driver-app","json":"/artifacts/sap-samples-e-mobility-driver-app.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-e-mobility-driver-app","name":"SAP-samples/e-mobility-driver-app","artifact_type":"sample","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/SAP-samples/e-mobility-driver-app","title":"SAP-samples/e-mobility-driver-app — README","checked":"2026-09-13","quote":"| [Node.js](https://nodejs.org/) | >= 20 | JavaScript runtime |"}}],"use_as":"starting-point","domain":"learning-and-reference","origin_ring":"sap-official","description":{"one_line":"A CAP-based progressive web app that lets electric-vehicle drivers manage charging badges, start and stop charging sessions, and find stations, proxying three SAP E-Mobility OData APIs.","short":"CAP-based PWA for EV drivers proxying SAP E-Mobility OData APIs","what_it_solves":"A driver-facing app for SAP E-Mobility needs to combine three separate charging-related APIs behind one interface, and this proxies them: the Charging Station, Charging Session and Badge services, each authenticated with OAuth2 client credentials injected as a Cloud Foundry service binding in production. It covers badge management, starting and stopping a session, viewing charging history and cost, and finding stations on an OpenStreetMap-based map. Authentication runs on SAP IAS with SAP AMS for policy-based authorization, currently down to a single `Driver` policy. Station-finding aside, it stops at SAP E-Mobility's own APIs: it is a CAP and Vue.js frontend to them rather than a replacement."},"links":{"repo":"https://github.com/SAP-samples/e-mobility-driver-app"},"type_properties":{"form":{"value":"reference-application","sources":[{"url":"https://github.com/SAP-samples/e-mobility-driver-app","title":"SAP-samples/e-mobility-driver-app — README","checked":"2026-10-18","quote":"This is a full-stack e-mobility application that enables drivers to:"}]}},"identity":{"license":"Apache-2.0"},"maintainers":["actor:sap-samples"],"source_available":true,"demonstrates":["capability:reference-apps","capability:authorization"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-13"},"contributors":["actor:olivierbagot"]},"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":"no release dates"},{"label":"Maintainer's CI","tier":"good","evidence":"CI Pipeline green, 2026-10-23"}],"practice":[{"label":"Tests","tier":"good","evidence":"97 test files"},{"label":"Docs","tier":"good","evidence":"README 13 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":1,"forks":0,"open_issues":1,"archived":false,"pushed_at":"2026-10-23","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2025-10-02T17:43:32Z","open_prs":1,"tree_truncated":false,"test_files":97,"workflows":7,"other_ci":false,"readme_bytes":13640,"docs_files":0,"changelog":false,"license_file":true,"dts_files":8,"first_commit":"2025-10-02","last_commit":"2026-10-23","commits":93,"contributors":4,"ci_status":"success","ci_run_at":"2026-10-23","ci_workflow":"CI Pipeline","ci_event":"push","readme_path":"README.md","readme_sha":"17413d6dbdf00381610ea2baf545e2a7f061e27b","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:olivierbagot","name":"Olivier Bagot","json":"/actors/olivierbagot.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}