# mizcausevic-dev/kinetic-api-gateway architecture

> Architecture diagram of the GitHub repository mizcausevic-dev/kinetic-api-gateway, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mizcausevic-dev/kinetic-api-gateway
- Repository: https://github.com/mizcausevic-dev/kinetic-api-gateway

## Overview

Kinetic API Gateway is an Express REST service for B2B revenue operations. A client sends requests to the running server; the app applies middleware and dispatches them to health, lead, account, campaign, or scoring routes. Data routes read in-memory sample records, while the scoring route validates submitted firmographic and intent inputs and calls the scoring utility for a tier, explanation, and recommended action. The README also documents Swagger UI backed by OpenAPI. Route and scoring behavior is supported by sampled source; broader documentation behavior follows the README and tree.

Main entry points: [`src/app.js`](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/app.js) (Express app), [`src/routes/leads.js`](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/leads.js) (Lead routes), [`src/routes/accounts.js`](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/accounts.js) (Account routes), [`src/routes/campaigns.js`](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/campaigns.js) (Campaign routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gateway["API gateway"]
  node_server["HTTP server<br/>[server.js]"]
  node_app["Express app<br/>[app.js]"]
  node_error["Error handler<br/>[errorHandler.js]"]
  node_openapi["OpenAPI contract<br/>[openapi.yaml]"]
  node_health["Health route<br/>[health.js]"]
end

subgraph group_revenue["Revenue data"]
  node_leads["Lead routes<br/>[leads.js]"]
  node_accounts["Account routes<br/>[accounts.js]"]
  node_campaigns["Campaign routes<br/>[campaigns.js]"]
  node_sampledata["Sample records<br/>[data.js]"]
end

subgraph group_qualification["Lead qualification"]
  node_score_route["Scoring route<br/>[score.js]"]
  node_scoring["Scoring rules<br/>[scoring.js]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_server
node_server -->|"starts app"| node_app
node_app -->|"loads contract"| node_openapi
node_app -->|"dispatches"| node_health
node_app -->|"dispatches"| node_leads
node_app -->|"dispatches"| node_accounts
node_app -->|"dispatches"| node_campaigns
node_app -->|"dispatches"| node_score_route
node_app -->|"forwards errors"| node_error
node_leads -->|"reads leads"| node_sampledata
node_accounts -->|"reads accounts"| node_sampledata
node_campaigns -->|"reads campaigns"| node_sampledata
node_score_route -->|"scores inputs"| node_scoring
node_health -->|"returns status"| node_client
node_leads -->|"returns leads"| node_client
node_accounts -->|"returns accounts"| node_client
node_campaigns -->|"returns campaigns"| node_client
node_score_route -->|"returns result"| node_client
node_error -->|"returns error"| node_client

click node_server "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/server.js"
click node_app "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/app.js"
click node_error "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/middleware/errorHandler.js"
click node_openapi "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/docs/openapi.yaml"
click node_health "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/health.js"
click node_leads "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/leads.js"
click node_accounts "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/accounts.js"
click node_campaigns "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/campaigns.js"
click node_sampledata "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/data.js"
click node_score_route "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/score.js"
click node_scoring "https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/utils/scoring.js"

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_server,node_app,node_error,node_openapi,node_health,node_client toneBlue
class node_leads,node_accounts,node_campaigns,node_sampledata toneAmber
class node_score_route,node_scoring toneMint
```

## Components

### API gateway

- [HTTP server](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/server.js): `src/server.js`
- [Express app](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/app.js): `src/app.js`
- [Error handler](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/middleware/errorHandler.js): `src/middleware/errorHandler.js`
- [OpenAPI contract](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/docs/openapi.yaml): `docs/openapi.yaml`
- [Health route](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/health.js): `src/routes/health.js`

### Revenue data

- [Lead routes](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/leads.js): `src/routes/leads.js`
- [Account routes](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/accounts.js): `src/routes/accounts.js`
- [Campaign routes](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/campaigns.js): `src/routes/campaigns.js`
- [Sample records](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/data.js): `src/data.js`

### Lead qualification

- [Scoring route](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/routes/score.js): `src/routes/score.js`
- [Scoring rules](https://github.com/mizcausevic-dev/kinetic-api-gateway/blob/main/src/utils/scoring.js): `src/utils/scoring.js`

### Other components

- **API client**

## Connections

- API client → HTTP server: sends requests
- HTTP server → Express app: starts app
- Express app → OpenAPI contract: loads contract
- Express app → Health route: dispatches
- Express app → Lead routes: dispatches
- Express app → Account routes: dispatches
- Express app → Campaign routes: dispatches
- Express app → Scoring route: dispatches
- Express app → Error handler: forwards errors
- Lead routes → Sample records: reads leads
- Account routes → Sample records: reads accounts
- Campaign routes → Sample records: reads campaigns
- Scoring route → Scoring rules: scores inputs
- Health route → API client: returns status
- Lead routes → API client: returns leads
- Account routes → API client: returns accounts
- Campaign routes → API client: returns campaigns
- Scoring route → API client: returns result
- Error handler → API client: returns error
