{"ref":"artifact:sap-samples-cap-sflight","page":"/artifacts/sap-samples-cap-sflight","json":"/artifacts/sap-samples-cap-sflight.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-cap-sflight","name":"SAP-samples/cap-sflight","artifact_type":"sample","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/SAP-samples/cap-sflight","title":"SAP-samples/cap-sflight — README","checked":"2026-09-13","quote":"Build and Run - Node.js Backend"}},{"key":"java","source":{"url":"https://github.com/SAP-samples/cap-sflight","title":"SAP-samples/cap-sflight — README","checked":"2026-09-13","quote":"Build and Run - Java Backend"}}],"use_as":"reference","domain":"ui-and-frontend-bridge","origin_ring":"sap-official","description":{"one_line":"A travel-booking reference application built with CAP and SAP Fiori elements, whose same UIs run against a Node.js and a Java backend so the two stacks can be compared directly.","short":"Travel-booking reference app on CAP Node.js and Java backends","what_it_solves":"The same travel-processing and analytics UIs run against either a CAP Node.js backend or a CAP Java SDK backend, letting the two stacks be compared directly rather than read about separately. It demonstrates SAP Fiori annotations and runs UI test suites across the stacks, including an Analytical List Page built on an experimental new OData parser in the Node.js runtime. It stops short of masking the app's own rough edges: the README notes workarounds still in the model and handlers, and a travel total that simply sums prices while ignoring currencies."},"links":{"repo":"https://github.com/SAP-samples/cap-sflight"},"type_properties":{"form":{"value":"reference-application","sources":[{"url":"https://github.com/SAP-samples/cap-sflight","title":"SAP-samples/cap-sflight — README","checked":"2026-10-18","quote":"This is a sample app for the travel reference scenario"}]}},"identity":{"license":"Apache-2.0"},"source_available":true,"demonstrates":["capability:fiori-annotations","capability:reference-apps"],"maintainers":["actor:sap-samples"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-13"},"contributors":["actor:agoerler","actor:ajinkyapatil8190","actor:akatuoro","actor:beckermarc","actor:bobdenos","actor:btbernard","actor:bugwelle","actor:c-kobo","actor:chgeo","actor:danjoa","actor:danschlachter","actor:david-kunz","actor:davidhunglam","actor:dellagustin-sap","actor:devinea","actor:drktfl","actor:gregorwolf","actor:iwonahahn","actor:jenniferstamm","actor:johannes-vogel","actor:lisajulia","actor:mattschur","actor:mikhailgoncharov","actor:mikicvi-sap","actor:niemda","actor:pdt42","actor:petermuessig","actor:pierrefritsch","actor:rafaelhoff","actor:rbrechter","actor:rjayasinghe","actor:robinkuck","actor:schwma","actor:sidakphull","actor:sjvans","actor:stefan0816","actor:stefanhenke","actor:stewsk","actor:theplenkov","actor:uwe-klinger","actor:vmikhailenko"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"43 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":"Node.js CI green, 2026-10-19"}],"practice":[{"label":"Tests","tier":"good","evidence":"24 test files"},{"label":"Docs","tier":"good","evidence":"README 7 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":256,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":256,"forks":192,"open_issues":60,"archived":false,"pushed_at":"2026-10-19","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2021-04-20T22:14:27Z","open_prs":45,"tree_truncated":false,"test_files":24,"workflows":3,"other_ci":false,"readme_bytes":7642,"docs_files":0,"changelog":false,"license_file":true,"dts_files":1,"first_commit":"2021-04-20","last_commit":"2026-10-19","commits":1412,"contributors":43,"ci_status":"success","ci_run_at":"2026-10-19","ci_workflow":"Node.js CI","ci_event":"push","readme_path":"README.md","readme_sha":"dc3f7f2cda3332ceb3fcba5dfb8b865a8a8aec92","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:agoerler","name":"Adrian Görler","json":"/actors/agoerler.json"},{"ref":"actor:ajinkyapatil8190","name":"Ajinkya Patil","json":"/actors/ajinkyapatil8190.json"},{"ref":"actor:bugwelle","name":"Andre Meyering","json":"/actors/bugwelle.json"},{"ref":"actor:devinea","name":"Austin Devine","json":"/actors/devinea.json"},{"ref":"actor:bobdenos","name":"Bob den Os","json":"/actors/bobdenos.json"},{"ref":"actor:btbernard","name":"Brian Bernard","json":"/actors/btbernard.json"},{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:c-kobo","name":"Christian Kolbowski","json":"/actors/c-kobo.json"},{"ref":"actor:danjoa","name":"Daniel Hutzel","json":"/actors/danjoa.json"},{"ref":"actor:danschlachter","name":"Daniel Schlachter","json":"/actors/danschlachter.json"},{"ref":"actor:davidhunglam","name":"David H Lam","json":"/actors/davidhunglam.json"},{"ref":"actor:drktfl","name":"Dirk Teufel","json":"/actors/drktfl.json"},{"ref":"actor:david-kunz","name":"Dr. David A. Kunz","json":"/actors/david-kunz.json"},{"ref":"actor:gregorwolf","name":"Gregor Wolf","json":"/actors/gregorwolf.json"},{"ref":"actor:dellagustin-sap","name":"Guilherme Dellagustin","json":"/actors/dellagustin-sap.json"},{"ref":"actor:iwonahahn","name":"Iwona Hahn","json":"/actors/iwonahahn.json"},{"ref":"actor:jenniferstamm","name":"JenniferStamm","json":"/actors/jenniferstamm.json"},{"ref":"actor:johannes-vogel","name":"Johannes Vogel","json":"/actors/johannes-vogel.json"},{"ref":"actor:akatuoro","name":"Johannes Vogt","json":"/actors/akatuoro.json"},{"ref":"actor:lisajulia","name":"Lisa Julia Nebel","json":"/actors/lisajulia.json"},{"ref":"actor:beckermarc","name":"Marc Becker","json":"/actors/beckermarc.json"},{"ref":"actor:schwma","name":"Marcel Schwarz","json":"/actors/schwma.json"},{"ref":"actor:mattschur","name":"Matthias Schur","json":"/actors/mattschur.json"},{"ref":"actor:mikhailgoncharov","name":"Mikhail Goncharov","json":"/actors/mikhailgoncharov.json"},{"ref":"actor:niemda","name":"niemda","json":"/actors/niemda.json"},{"ref":"actor:pdt42","name":"Paul","json":"/actors/pdt42.json"},{"ref":"actor:petermuessig","name":"Peter Muessig","json":"/actors/petermuessig.json"},{"ref":"actor:theplenkov","name":"Petr Plenkov","json":"/actors/theplenkov.json"},{"ref":"actor:pierrefritsch","name":"Pierre Fritsch","json":"/actors/pierrefritsch.json"},{"ref":"actor:rafaelhoff","name":"rafaelhoff","json":"/actors/rafaelhoff.json"},{"ref":"actor:rbrechter","name":"rbrechter","json":"/actors/rbrechter.json"},{"ref":"actor:rjayasinghe","name":"Robin","json":"/actors/rjayasinghe.json"},{"ref":"actor:robinkuck","name":"Robin Kuck","json":"/actors/robinkuck.json"},{"ref":"actor:sidakphull","name":"sidakphull","json":"/actors/sidakphull.json"},{"ref":"actor:sjvans","name":"sjvans","json":"/actors/sjvans.json"},{"ref":"actor:stefan0816","name":"Stefan Engelhardt","json":"/actors/stefan0816.json"},{"ref":"actor:stefanhenke","name":"Stefan Henke","json":"/actors/stefanhenke.json"},{"ref":"actor:stewsk","name":"Steffen Weinstock","json":"/actors/stewsk.json"},{"ref":"actor:uwe-klinger","name":"Uwe Klinger","json":"/actors/uwe-klinger.json"},{"ref":"actor:mikicvi-sap","name":"Vilim Mikic","json":"/actors/mikicvi-sap.json"},{"ref":"actor:vmikhailenko","name":"Vladimir","json":"/actors/vmikhailenko.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}