{"id":24838927,"url":"https://github.com/waelson/audit","last_synced_at":"2025-04-12T09:35:51.111Z","repository":{"id":273961451,"uuid":"921386959","full_name":"Waelson/audit","owner":"Waelson","description":"Este repositório apresenta a implementação de um sistema de auditoria de dados, desenvolvido para demonstrar de forma prática a aplicação de um mecanismo de CDC (Change Data Capture).","archived":false,"fork":false,"pushed_at":"2025-01-26T23:59:15.000Z","size":3454,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T04:33:53.931Z","etag":null,"topics":["auditing","cdc","debezium","debezium-connector","golang","immudb","kafka","nodejs","reactjs"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Waelson.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,"publiccode":null,"codemeta":null}},"created_at":"2025-01-23T21:18:04.000Z","updated_at":"2025-02-20T22:43:11.000Z","dependencies_parsed_at":"2025-01-24T02:26:57.667Z","dependency_job_id":"06518cfc-5f4b-4e45-9131-a48351b72bc8","html_url":"https://github.com/Waelson/audit","commit_stats":null,"previous_names":["waelson/audit"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Faudit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Faudit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Faudit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Faudit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Waelson","download_url":"https://codeload.github.com/Waelson/audit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248546832,"owners_count":21122390,"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":["auditing","cdc","debezium","debezium-connector","golang","immudb","kafka","nodejs","reactjs"],"created_at":"2025-01-31T06:36:20.146Z","updated_at":"2025-04-12T09:35:51.098Z","avatar_url":"https://github.com/Waelson.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solução de Auditoria Baseada em CDC\n\n![Golang](https://img.shields.io/badge/technology-Golang-blue.svg)  ![Debezium](https://img.shields.io/badge/technology-Debezium-orange.svg) ![React](https://img.shields.io/badge/technology-React-green.svg)\n\nEste repositório contém a implementação de um sistema de auditoria de dados utilizando a técnica de Change Data Capture (CDC). O objetivo é capturar e registrar alterações realizadas em bancos de dados relacionais de forma transparente para a aplicação, oferecendo uma solução prática para auditoria e rastreamento de eventos.\n\n### Motivação\n\nSistemas onde a rastreabilidade de dados é essencial, como ambientes financeiros, e-commerce, ou qualquer aplicação sujeita a regulamentações, a auditoria de alterações nos dados é uma necessidade crítica. Este projeto demonstra como o CDC pode ser integrado a uma arquitetura moderna para capturar, armazenar e consultar eventos de forma estruturada.\n\n\n## Arquitetura\n\n![Architecture](documentation/architecture.png)\n\n### Componentes\n\n| **Componente**         | **Descrição**                                                                                                                              |\n|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|\n| **Payment UI**         | Interface gráfica (frontend) que permite ao usuário iniciar pagamentos.                                                                    |\n| **Payment API**        | Serviço de backend responsável por processar e registrar transações no banco de dados PostgreSQL.                                          |\n| **PostgreSQL**         | Banco de dados utilizado para armazenar os registros das transações.                                                                       |\n| **Debezium Connector** | Plataforma de Change Data Capture (CDC) que monitora o PostgreSQL por meio de seus arquivos WAL (Write-Ahead Logs) para capturar mudanças. |\n| **Kafka Cluster**      | Sistema de mensageria que recebe as alterações capturadas pelo Debezium e distribui mensagens para os consumidores.                        |\n| **Audit Consumer**     | Serviço que consome as mensagens do Kafka, realiza transformações nos dados e os insere no banco de dados ImmuDB.                          |\n| **ImmuDB**             | Banco de dados imutável utilizado para armazenar os registros de auditoria, garantindo integridade e rastreabilidade dos eventos.          |\n| **Audit API**          | Serviço de backend que expõe endpoints para consulta e acesso aos registros de auditoria armazenados no ImmuDB.                            |\n| **Audit UI**           | Interface gráfica (frontend) que permite a consulta e análise das trilhas de auditoria.                                                    |\n\n\n### Tecnologias\n| **Categoria**       | **Ferramenta/Descrição**    |\n|---------------------|-----------------------------|\n| **Linguagem**       | Golang, JavaScript (NodeJS) |\n| **Bibliotecas**     | React                       |\n| **Banco de Dados**  | ImmuDB, Postgres            |\n| **Mensageria**      | Apache Kafka                |\n\n## Instalação\nA aplicação está configurada para ser executada com Docker Compose. Siga os passos logo abaixo, mas assegure-se de ter os pré-requisitos instalados:\n\n**Pré-requisitos:**\n- Docker\n- Go 1.21 ou superior\n- Node 20.12 ou superior (para executar projeto localmente)\n\n1. **Clonar o repositório**\n\n```bash\ngit clone https://github.com/Waelson/audit.git\ncd audit\n```\n\n2. **Inicializar a stack**\n\n```bash\ndocker-compose up --build\n```\n\n3. **Criar o conector**\n\n```bash\ncurl --location 'http://localhost:8083/connectors' \\\n--header 'Content-Type: application/json' \\\n--data '{\n  \"name\": \"postgres-connector\",\n  \"config\": {\n    \"connector.class\": \"io.debezium.connector.postgresql.PostgresConnector\",\n    \"database.hostname\": \"postgres\",\n    \"database.port\": \"5432\",\n    \"database.user\": \"postgres\",\n    \"database.password\": \"password\",\n    \"database.dbname\": \"payment_db\",\n    \"database.server.name\": \"payment-postgres\",\n    \"slot.name\": \"debezium_slot\",\n    \"plugin.name\": \"pgoutput\",\n    \"publication.name\": \"audit_events\",\n    \"database.history.kafka.bootstrap.servers\": \"kafka:9092\",\n    \"database.history.kafka.topic\": \"schema-changes.audit-trail\",\n    \"topic.prefix\": \"audit\",\n    \"table.include.list\": \"public.payments\",\n    \"transforms\": \"RouteToTopic,AddAppName\",\n    \"transforms.RouteToTopic.type\": \"org.apache.kafka.connect.transforms.RegexRouter\",\n    \"transforms.RouteToTopic.regex\": \"audit.public.payments\",\n    \"transforms.RouteToTopic.replacement\": \"audit-trail\",\n    \"decimal.handling.mode\": \"string\",\n    \"transforms.AddAppName.type\": \"org.apache.kafka.connect.transforms.InsertField$Value\",\n    \"transforms.AddAppName.static.field\": \"application\",\n    \"transforms.AddAppName.static.value\": \"payment-api\"\n  }\n}'\n```\n\n4. **Acessar a UI de Simulação de Pagamentos**\n- Digite a URL http://localhost:3000/ no browser.\n- Realize simulações de transações de pagamento de cartão de crédito clicando no botão `Pay`.\n\n5. **Acessar a UI de Consulta de Trilhas de Auditoria**\n- Digite a URL http://localhost:4000/ no browser.\n- Preencha os filtros, lembrando de que a única operação contemplada é `Create` e depois clique no botão `Search`. \n\n## Interface de Usuário\n\n### Simulador de Pagamentos\n\n![payment](documentation/payment_simulator.png)\n\n### Consulta de Trilhas de Auditoria\n\n![audit](documentation/audit_trail_query.png)\n\n## Contribuições\n\nContribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests com melhorias, correções ou novas funcionalidades.\n\n## Licença\n\nEste projeto está licenciado sob a Licença MIT.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaelson%2Faudit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaelson%2Faudit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaelson%2Faudit/lists"}