# bhargavram114/fraud-detection-project architecture

> Architecture diagram of the GitHub repository bhargavram114/fraud-detection-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bhargavram114/fraud-detection-project
- Repository: https://github.com/bhargavram114/fraud-detection-project

## Overview

This is an ATM fraud-detection streaming application. Its main workflow simulates transactions, sends them to Kafka, parses them in a Spark job, applies watermarked fraud rules, and writes alerts to Kafka and Parquet; malformed records go to a dead-letter topic. A separate development job prints alerts to the console. The production job also loads optional dormant-card reference data and exposes a health endpoint. The graph reflects the sampled code and README; unsampled deployment and configuration details are not inferred.

Main entry points: [`jobs/fraud_detection_prod.py`](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection_prod.py) (Production stream job), [`jobs/fraud_detection.py`](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection.py) (Development stream job), [`jobs/rules/fraud_rules.py`](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/rules/fraud_rules.py) (Streaming rule wrappers), [`producer/transaction_generator.py`](https://github.com/bhargavram114/fraud-detection-project/blob/master/producer/transaction_generator.py) (Transaction simulator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingestion["Transaction ingestion"]
  node_simulator["Transaction simulator"]
  node_kafka["Kafka transactions"]
end

subgraph group_processing["Streaming processing"]
  node_prod["Production stream job"]
  node_dev["Development stream job<br/>[fraud_detection.py]"]
  node_schema["Transaction schema<br/>[schemas.py]"]
  node_rules["Streaming rule wrappers<br/>[fraud_rules.py]"]
  node_transforms["Fraud transforms<br/>[transforms.py]"]
  node_dormant[("Dormant-card reference")]
end

subgraph group_outputs["Alert outputs"]
  node_alertkafka["Kafka alerts"]
  node_parquet[("Parquet alert archive")]
  node_dlq["Kafka dead-letter topic"]
  node_console["Console alert output"]
end

subgraph group_operations["Operations"]
  node_config["Runtime configuration<br/>[app.yaml]"]
  node_health["Health endpoint"]
end

node_operator(("Pipeline operator"))

node_simulator -->|"publishes transactions"| node_kafka
node_kafka -->|"streams input"| node_prod
node_prod -->|"loads settings"| node_config
node_prod -->|"parses records"| node_schema
node_prod -->|"applies rules"| node_rules
node_rules -->|"delegates transforms"| node_transforms
node_prod -->|"loads reference"| node_dormant
node_prod -->|"writes alerts"| node_alertkafka
node_prod -->|"archives alerts"| node_parquet
node_prod -->|"routes bad rows"| node_dlq
node_prod -->|"starts endpoint"| node_health
node_kafka -->|"streams input"| node_dev
node_dev -->|"parses records"| node_schema
node_dev -->|"applies rules"| node_rules
node_dev -->|"prints alerts"| node_console
node_operator -->|"starts generator"| node_simulator
node_operator -->|"starts production job"| node_prod
node_operator -->|"starts dev job"| node_dev

click node_simulator "https://github.com/bhargavram114/fraud-detection-project/blob/master/producer/transaction_generator.py"
click node_prod "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection_prod.py"
click node_dev "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection.py"
click node_schema "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/schemas.py"
click node_rules "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/rules/fraud_rules.py"
click node_transforms "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/rules/transforms.py"
click node_config "https://github.com/bhargavram114/fraud-detection-project/blob/master/config/app.yaml"
click node_health "https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection_prod.py"

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_simulator,node_kafka toneBlue
class node_prod,node_dev,node_schema,node_rules,node_transforms,node_dormant toneAmber
class node_alertkafka,node_parquet,node_dlq,node_console toneMint
class node_config,node_health toneRose
class node_operator toneIndigo
```

## Components

### Transaction ingestion

- [Transaction simulator](https://github.com/bhargavram114/fraud-detection-project/blob/master/producer/transaction_generator.py): `producer/transaction_generator.py`
- **Kafka transactions**

### Streaming processing

- [Production stream job](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection_prod.py): `jobs/fraud_detection_prod.py`
- [Development stream job](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection.py): `jobs/fraud_detection.py`
- [Transaction schema](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/schemas.py): `jobs/schemas.py`
- [Streaming rule wrappers](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/rules/fraud_rules.py): `jobs/rules/fraud_rules.py`
- [Fraud transforms](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/rules/transforms.py): `jobs/rules/transforms.py`
- **Dormant-card reference**

### Alert outputs

- **Kafka alerts**
- **Parquet alert archive**
- **Kafka dead-letter topic**
- **Console alert output**

### Operations

- [Runtime configuration](https://github.com/bhargavram114/fraud-detection-project/blob/master/config/app.yaml): `config/app.yaml`
- [Health endpoint](https://github.com/bhargavram114/fraud-detection-project/blob/master/jobs/fraud_detection_prod.py): `jobs/fraud_detection_prod.py`

### Other components

- **Pipeline operator**

## Connections

- Transaction simulator → Kafka transactions: publishes transactions (evidence: `producer/transaction_generator.py`)
- Kafka transactions → Production stream job: streams input (evidence: `README.md`)
- Production stream job → Runtime configuration: loads settings (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Transaction schema: parses records (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Streaming rule wrappers: applies rules (evidence: `jobs/fraud_detection_prod.py`)
- Streaming rule wrappers → Fraud transforms: delegates transforms (evidence: `jobs/rules/fraud_rules.py`)
- Production stream job → Dormant-card reference: loads reference (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Kafka alerts: writes alerts (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Parquet alert archive: archives alerts (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Kafka dead-letter topic: routes bad rows (evidence: `jobs/fraud_detection_prod.py`)
- Production stream job → Health endpoint: starts endpoint (evidence: `jobs/fraud_detection_prod.py`)
- Kafka transactions → Development stream job: streams input (evidence: `jobs/fraud_detection.py`)
- Development stream job → Transaction schema: parses records (evidence: `jobs/fraud_detection.py`)
- Development stream job → Streaming rule wrappers: applies rules (evidence: `jobs/fraud_detection.py`)
- Development stream job → Console alert output: prints alerts (evidence: `jobs/fraud_detection.py`)
- Pipeline operator → Transaction simulator: starts generator (evidence: `README.md`)
- Pipeline operator → Production stream job: starts production job (evidence: `README.md`)
- Pipeline operator → Development stream job: starts dev job (evidence: `README.md`)
