# jasper07/cap-sflight-devops architecture

> Architecture diagram of the GitHub repository jasper07/cap-sflight-devops, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jasper07/cap-sflight-devops
- Repository: https://github.com/jasper07/cap-sflight-devops

## Overview

CAP SFLIGHT is a flight-and-travel management sample with Node and Java CAP service implementations, processor and analytics UIs, and Azure DevOps pipeline examples. The user-facing workflow centers on maintaining travel records and bookings through the processor, with service-side validation and price/status actions; analytics is a separate documented UI branch. The repository also presents reusable CI/CD pipeline patterns, including performance testing and CTMS upload. Some UI, CDS, and pipeline internals are unsampled, so their connections are omitted where the evidence does not establish them.

Main entry points: [`srv/travel-service.js`](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/travel-service.js) (Travel service), [`karma-cap-middleware.js`](https://github.com/jasper07/cap-sflight-devops/blob/main/karma-cap-middleware.js) (CAP test middleware), [`srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java`](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java) (Travel creation), [`app/travel_processor/webapp/Component.js`](https://github.com/jasper07/cap-sflight-devops/blob/main/app/travel_processor/webapp/Component.js) (Travel processor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_service["Travel services"]
  node_travel_api["Travel service<br/>[travel-service.js]"]
  node_java_creation["Travel creation"]
  node_java_status["Status actions"]
  node_discount["Discount handling"]
  node_price_recalc["Price recalculation"]
  node_travel_model["Travel data model<br/>[schema.cds]"]
  node_analytics_service["Analytics service"]
  node_date_exception["Travel date errors"]
  node_status_exception["Travel status errors"]
end

subgraph group_ui["User interfaces"]
  node_processor_ui["Travel processor<br/>[Component.js]"]
  node_analytics_ui["Travel analytics<br/>[Component.js]"]
end

subgraph group_pipelines["Pipeline examples"]
  node_simple_pipeline["Simple pipeline"]
  node_advanced_pipeline["Advanced pipeline"]
  node_pipeline_templates["Pipeline templates"]
  node_ctms_upload["CTMS upload<br/>[ctmsUpload.js]"]
end

subgraph group_quality["Quality tooling"]
  node_e2e_tests["Browser journey tests<br/>[Journey.test.js]"]
  node_performance_test["Performance scenario"]
  node_dotenv["Performance env loader<br/>[dotenv.js]"]
  node_test_middleware["CAP test middleware"]
end

node_user(("Travel user"))

node_user -.->|"manages travel"| node_processor_ui
node_processor_ui -.->|"uses service"| node_travel_api
node_travel_api -->|"queries records"| node_travel_model
node_java_creation -->|"throws date errors"| node_date_exception
node_java_status -->|"throws status errors"| node_status_exception
node_advanced_pipeline -.->|"uses templates"| node_pipeline_templates
node_performance_test -->|"loads environment"| node_dotenv
node_test_middleware -->|"proxies requests"| node_travel_api
node_test_middleware -.->|"starts Java server"| node_java_creation
node_test_middleware -->|"starts Node server"| node_travel_api

click node_processor_ui "https://github.com/jasper07/cap-sflight-devops/blob/main/app/travel_processor/webapp/Component.js"
click node_analytics_ui "https://github.com/jasper07/cap-sflight-devops/blob/main/app/travel_analytics/webapp/Component.js"
click node_travel_api "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/travel-service.js"
click node_java_creation "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java"
click node_java_status "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/AcceptRejectHandler.java"
click node_discount "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/DeductDiscountHandler.java"
click node_price_recalc "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/RecalculatePriceHandler.java"
click node_travel_model "https://github.com/jasper07/cap-sflight-devops/blob/main/db/schema.cds"
click node_analytics_service "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/analytics-service.cds"
click node_simple_pipeline "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/azure-pipelines-simple.yml"
click node_advanced_pipeline "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/azure-pipelines-advanced.yml"
click node_pipeline_templates "https://github.com/jasper07/cap-sflight-devops/tree/main/azure-pipelines/templates"
click node_ctms_upload "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/ctms/ctmsUpload.js"
click node_e2e_tests "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/e2e/webapp/test/e2e/Journey.test.js"
click node_performance_test "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/performance/capsflightLaunchpad.js"
click node_dotenv "https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/performance/dotenv.js"
click node_test_middleware "https://github.com/jasper07/cap-sflight-devops/blob/main/karma-cap-middleware.js"
click node_date_exception "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelDateException.java"
click node_status_exception "https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelStatusException.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_travel_api,node_java_creation,node_java_status,node_discount,node_price_recalc,node_travel_model,node_analytics_service,node_date_exception,node_status_exception,node_user toneBlue
class node_processor_ui,node_analytics_ui toneAmber
class node_simple_pipeline,node_advanced_pipeline,node_pipeline_templates,node_ctms_upload toneMint
class node_e2e_tests,node_performance_test,node_dotenv,node_test_middleware toneRose
```

## Components

### Travel services

- [Travel service](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/travel-service.js): `srv/travel-service.js`
- [Travel creation](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java): `srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java`
- [Status actions](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/AcceptRejectHandler.java): `srv/src/main/java/com/sap/cap/sflight/processor/AcceptRejectHandler.java`
- [Discount handling](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/DeductDiscountHandler.java): `srv/src/main/java/com/sap/cap/sflight/processor/DeductDiscountHandler.java`
- [Price recalculation](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/RecalculatePriceHandler.java): `srv/src/main/java/com/sap/cap/sflight/processor/RecalculatePriceHandler.java`
- [Travel data model](https://github.com/jasper07/cap-sflight-devops/blob/main/db/schema.cds): `db/schema.cds`
- [Analytics service](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/analytics-service.cds): `srv/analytics-service.cds`
- [Travel date errors](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelDateException.java): `srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelDateException.java`
- [Travel status errors](https://github.com/jasper07/cap-sflight-devops/blob/main/srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelStatusException.java): `srv/src/main/java/com/sap/cap/sflight/processor/IllegalTravelStatusException.java`

### User interfaces

- [Travel processor](https://github.com/jasper07/cap-sflight-devops/blob/main/app/travel_processor/webapp/Component.js): `app/travel_processor/webapp/Component.js`
- [Travel analytics](https://github.com/jasper07/cap-sflight-devops/blob/main/app/travel_analytics/webapp/Component.js): `app/travel_analytics/webapp/Component.js`

### Pipeline examples

- [Simple pipeline](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/azure-pipelines-simple.yml): `azure-pipelines/azure-pipelines-simple.yml`
- [Advanced pipeline](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/azure-pipelines-advanced.yml): `azure-pipelines/azure-pipelines-advanced.yml`
- [Pipeline templates](https://github.com/jasper07/cap-sflight-devops/tree/main/azure-pipelines/templates): `azure-pipelines/templates`
- [CTMS upload](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/ctms/ctmsUpload.js): `azure-pipelines/ctms/ctmsUpload.js`

### Quality tooling

- [Browser journey tests](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/e2e/webapp/test/e2e/Journey.test.js): `azure-pipelines/e2e/webapp/test/e2e/Journey.test.js`
- [Performance scenario](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/performance/capsflightLaunchpad.js): `azure-pipelines/performance/capsflightLaunchpad.js`
- [Performance env loader](https://github.com/jasper07/cap-sflight-devops/blob/main/azure-pipelines/performance/dotenv.js): `azure-pipelines/performance/dotenv.js`
- [CAP test middleware](https://github.com/jasper07/cap-sflight-devops/blob/main/karma-cap-middleware.js): `karma-cap-middleware.js`

### Other components

- **Travel user**

## Connections

- Travel user → Travel processor: manages travel
- Travel processor → Travel service: uses service
- Travel service → Travel data model: queries records (evidence: `srv/travel-service.js`)
- Travel creation → Travel date errors: throws date errors (evidence: `srv/src/main/java/com/sap/cap/sflight/processor/CreationHandler.java`)
- Status actions → Travel status errors: throws status errors (evidence: `srv/src/main/java/com/sap/cap/sflight/processor/AcceptRejectHandler.java`)
- Advanced pipeline → Pipeline templates: uses templates (evidence: `README.md`)
- Performance scenario → Performance env loader: loads environment (evidence: `azure-pipelines/performance/capsflightLaunchpad.js`)
- CAP test middleware → Travel service: proxies requests (evidence: `karma-cap-middleware.js`)
- CAP test middleware → Travel creation: starts Java server (evidence: `karma-cap-middleware.js`)
- CAP test middleware → Travel service: starts Node server (evidence: `karma-cap-middleware.js`)
