{"id":27248828,"url":"https://github.com/bakdata/pipeline-atm-fraud","last_synced_at":"2025-04-10T23:48:12.799Z","repository":{"id":230073846,"uuid":"778376846","full_name":"bakdata/pipeline-atm-fraud","owner":"bakdata","description":"Demo pipeline for ATM fraud detection using streams-bootstrap","archived":false,"fork":false,"pushed_at":"2024-03-28T13:27:08.000Z","size":200,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-10T23:48:09.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bakdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-27T15:55:27.000Z","updated_at":"2024-07-16T14:29:40.000Z","dependencies_parsed_at":"2024-03-27T18:26:26.142Z","dependency_job_id":"454c3216-90ac-431b-97c5-4c5f583df42c","html_url":"https://github.com/bakdata/pipeline-atm-fraud","commit_stats":null,"previous_names":["bakdata/pipeline-atm-fraud"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakdata%2Fpipeline-atm-fraud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakdata%2Fpipeline-atm-fraud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakdata%2Fpipeline-atm-fraud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakdata%2Fpipeline-atm-fraud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bakdata","download_url":"https://codeload.github.com/bakdata/pipeline-atm-fraud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248317727,"owners_count":21083528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-10T23:48:12.185Z","updated_at":"2025-04-10T23:48:12.788Z","avatar_url":"https://github.com/bakdata.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kafka demo pipeline: ATM fraud detection with streams-bootstrap\n\n![demo-pipeline](https://github.com/bakdata/streams-explorer/blob/main/screens/demo-pipeline.png?raw=true)\n\n\u003e This is an adaption of the example pipeline for ATM fraud detection using [streams-bootstrap](https://github.com/bakdata/streams-bootstrap). The original by Confluent is written in KSQL and can be found in the [ksql-atm-fraud-detection](https://github.com/confluentinc/demo-scene/tree/master/ksql-atm-fraud-detection) repo. Details can be found in their [blogpost](https://www.confluent.io/blog/atm-fraud-detection-apache-kafka-ksql/)\n\u003e\n\u003e This version differs slightly from the original in that the test accounts are generated using a producer application.\n\u003e In addition, we turned the transactionavroproducer application into a producer application, eliminating the need to consume transactions data from an external producer.\n\u003e These minor changes allow us to have an automated deployment with no external intervention or manual data production.\n\n## Usage\n\n### Build containers using jib\n\n```shell\ngradle jib -Djib.to.image=url-to-container-registry.com/streams-explorer-demo-transactionavroproducer -Djib.container.mainClass=com.bakdata.kafka.TransactionAvroProducer\ngradle jib -Djib.to.image=url-to-container-registry.com/streams-explorer-demo-accountproducer -Djib.container.mainClass=com.bakdata.kafka.AccountProducer\ngradle jib -Djib.to.image=url-to-container-registry.com/streams-explorer-demo-transactionjoiner -Djib.container.mainClass=com.bakdata.kafka.TransactionJoiner\ngradle jib -Djib.to.image=url-to-container-registry.com/streams-explorer-demo-frauddetector -Djib.container.mainClass=com.bakdata.kafka.FraudDetector\ngradle jib -Djib.to.image=url-to-container-registry.com/streams-explorer-demo-accountlinker -Djib.container.mainClass=com.bakdata.kafka.AccountLinker\n```\n\n### Deploy in Kubernetes\n\n```shell\nhelm repo add bakdata-common https://raw.githubusercontent.com/bakdata/streams-bootstrap/master/charts/\nhelm repo update\nhelm upgrade --debug --install --force --values values-transactionavroproducer.yaml demo-transactionavroproducer bakdata-common/streams-app\nhelm upgrade --debug --install --force --values values-accountproducer.yaml demo-accountproducer bakdata-common/streams-app\nhelm upgrade --debug --install --force --values values-transactionjoiner.yaml demo-transactionjoiner bakdata-common/streams-app\nhelm upgrade --debug --install --force --values values-frauddetector.yaml demo-frauddetector bakdata-common/streams-app\nhelm upgrade --debug --install --force --values values-accountlinker.yaml demo-accountlinker bakdata-common/streams-app\n```\n\n### Generate test accounts\n\nThe account producer application publishes accounts data (stored in a `.txt` file) into the expected topic.\n\n### Generate test transactions\n\nTo generate our incoming transactions (legitimate or fraudulent) we are using the `transactionavroproducer` application inspired by the [gess](https://github.com/rmoff/gess) tool. This project's data is derived entirely from the same gess project.\nThe number of incoming transactions is configurable using the variables `REAL_TX` and `ITERATION` in our `values-transactionavroproducer.yaml` file.\nThe first variable specifies how many legitimate incoming transactions must be produced before producing one fraudulent incoming transaction.\nOne iteration contains `REAL_TX` legitimate transactions and one fraudulent transaction.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbakdata%2Fpipeline-atm-fraud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbakdata%2Fpipeline-atm-fraud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbakdata%2Fpipeline-atm-fraud/lists"}