{"ref":"artifact:capire-xtravels","page":"/artifacts/capire-xtravels","json":"/artifacts/capire-xtravels.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"capire-xtravels","name":"xtravels","artifact_type":"sample","ecosystem":"cap","use_as":"starting-point","domain":"learning-and-reference","origin_ring":"sap-official","description":{"one_line":"A travel-booking application built on the master data that xflights publishes, composing another package's schema into its own rather than owning master data itself.","short":"CAP travel-booking app built on xflights master data","what_it_solves":"`npm install` then `cds watch` starts it at localhost:4004, consuming `@capire/xflights-data` either from GitHub Packages or from a local npm workspace set up alongside the xflights source. It demonstrates cross-repository CAP composition end to end: booking entities defined here, flight and airport entities imported from elsewhere, mashed into one CDS model."},"links":{"repo":"https://github.com/capire/xtravels"},"identity":{"license":"Apache-2.0"},"source_available":true,"demonstrates":["capability:reference-apps","capability:service-integration","capability:service-composition","capability:agent-tooling","capability:mcp-servers"],"maintainers":["actor:capire"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"contributors":["actor:chgeo","actor:danjoa","actor:danschlachter","actor:johannes-vogel","actor:nkaputnik","actor:pdt42","actor:renejeglinsky","actor:sirsimon04","actor:sjvans","actor:stefanrudi","actor:stewsk","actor:swaldmann"],"history":[{"date":"2026-09-27","field":"demonstrates","from":"reference-apps, service-integration, service-composition","to":"plus agent-tooling and mcp-servers","reason":"capire's XTravels Sample for AI page shows the sample integrating several MCP services and CAP-level agents."}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"12 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":"Cloud Foundry green, 2026-10-02"}],"practice":[{"label":"Tests","tier":"good","evidence":"8 test files"},{"label":"Docs","tier":"fair","evidence":"README 3 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":14,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":14,"forks":10,"open_issues":17,"archived":false,"pushed_at":"2026-10-12","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":12,"tree_truncated":false,"test_files":8,"workflows":2,"other_ci":false,"readme_bytes":3148,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2025-06-30","last_commit":"2026-10-02","commits":238,"ci_status":"success","ci_run_at":"2026-10-02","ci_workflow":"Cloud Foundry","ci_event":"push","readme_path":"readme.md","readme_sha":"3d14cbd06344fb511406e042d29ddd299a61909e","created_at":"2025-06-30T09:07:44Z","open_prs":12,"repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:capire","name":"Capire Docs & Samples","json":"/actors/capire.json"}],"contributors":[{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:danjoa","name":"Daniel Hutzel","json":"/actors/danjoa.json"},{"ref":"actor:danschlachter","name":"Daniel Schlachter","json":"/actors/danschlachter.json"},{"ref":"actor:johannes-vogel","name":"Johannes Vogel","json":"/actors/johannes-vogel.json"},{"ref":"actor:nkaputnik","name":"Nick Josipovic","json":"/actors/nkaputnik.json"},{"ref":"actor:pdt42","name":"Paul","json":"/actors/pdt42.json"},{"ref":"actor:renejeglinsky","name":"René Jeglinsky","json":"/actors/renejeglinsky.json"},{"ref":"actor:sirsimon04","name":"Simon Engel","json":"/actors/sirsimon04.json"},{"ref":"actor:sjvans","name":"sjvans","json":"/actors/sjvans.json"},{"ref":"actor:stefanrudi","name":"Stefan Rudi","json":"/actors/stefanrudi.json"},{"ref":"actor:swaldmann","name":"Steffen Waldmann","json":"/actors/swaldmann.json"},{"ref":"actor:stewsk","name":"Steffen Weinstock","json":"/actors/stewsk.json"}],"explained_by":[{"ref":"content:cap-in-the-age-of-ai-5-agents-wrap-up","name":"CAP in the age of AI #5 - agents wrap-up","json":"/content/cap-in-the-age-of-ai-5-agents-wrap-up.json"},{"ref":"content:devtoberfest-2026-cap-level-data-federation","name":"CAP-level Data Federation","json":"/content/devtoberfest-2026-cap-level-data-federation.json"}],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}