{"id":31814482,"url":"https://github.com/fervinicius/bank","last_synced_at":"2026-05-09T02:04:12.970Z","repository":{"id":314805540,"uuid":"1056606110","full_name":"fervinicius/bank","owner":"fervinicius","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-14T21:34:36.000Z","size":1162,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-14T23:27:18.873Z","etag":null,"topics":["airflow-dags","docker","docker-compose","etl-pipeline","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fervinicius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-14T12:54:13.000Z","updated_at":"2025-09-14T21:34:40.000Z","dependencies_parsed_at":"2025-09-14T23:27:20.390Z","dependency_job_id":"a267721b-62f0-4702-b5a1-abc50fcb9299","html_url":"https://github.com/fervinicius/bank","commit_stats":null,"previous_names":["fervinicius/bank"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fervinicius/bank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fervinicius%2Fbank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fervinicius%2Fbank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fervinicius%2Fbank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fervinicius%2Fbank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fervinicius","download_url":"https://codeload.github.com/fervinicius/bank/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fervinicius%2Fbank/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006637,"owners_count":26084150,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["airflow-dags","docker","docker-compose","etl-pipeline","python"],"created_at":"2025-10-11T08:52:25.733Z","updated_at":"2025-10-11T08:52:26.684Z","avatar_url":"https://github.com/fervinicius.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pipeline para o Banco BanVic\n\n## Introdução\n\nEste projeto simula a criação do pipeline de dados (ETL) para o banco fictício \"BanVic\". O objetivo é extrair dados de diferentes sistemas de origem, centralizá-los em um Data Warehouse e orquestrar todo o processo de forma automatizada, robusta e diária.\n\n## Arquitetura da Solução\n\nO pipeline foi construído utilizando uma arquitetura moderna e containerizada com Docker, garantindo total reprodutibilidade do ambiente.\n\n- **Fontes de Dados**:\n  1.  **Banco de Dados Relacional (PostgreSQL)**: Contém dados cadastrais de agências, clientes, colaboradores, contas e propostas de crédito.\n  2.  **Arquivo de Transações (CSV)**: Um arquivo com o histórico de transações financeiras.\n- **Orquestração**:\n  - **Apache Airflow** Utilizado para agendar, executar e monitorar todo o fluxo de trabalho (DAG).\n- **Data Lake Local**:\n  - Um diretório no File System local (`data_lake/`) é usado para armazenar os dados extraídos no formato CSV, seguindo um particionamento por data.\n- **Data Warehouse**:\n  - Um banco de dados **PostgreSQL**, rodando em um contêiner Docker separado, serve como o Data Warehouse de destino, onde os dados são consolidados.\n\n\n## Pré-requisitos\n\nPara executar este projeto, você precisará ter os seguintes softwares instalados:\n\n- **WSL2 (Windows Subsystem for Linux)**: Recomendado para usuários Windows, garantindo compatibilidade e performance.\n- **Docker e Docker Compose**: Para a criação e gerenciamento dos contêineres.\n\n## Estrutura do Projeto\n\nO projeto está organizado da seguinte forma:\n\n```\ndesafio_banvic/\n|\n├── dags/\n|   └── banvic_etl_dag.py  # Script da DAG do Airflow\n|\n├── data_lake/             # Diretório onde os CSVs extraídos são salvos\n|\n├── source_data/\n|   ├── banvic.sql         # Script de criação do banco de dados de origem\n|   └── transacoes.csv     # Arquivo de dados de origem\n|\n├── .dockerignore\n├── .gitignore\n└── docker-compose.yml     # Arquivo de orquestração dos contêineres\n```\n\n## Setup e Execução\n\nSiga os passos abaixo para executar o pipeline:\n\n**1. Clone ou Faça o Download do Projeto:**\n   Garanta que todos os arquivos estejam na estrutura de pastas descrita acima.\n   **Importante para usuários WSL:** Certifique-se de que a pasta do projeto esteja dentro do sistema de arquivos do Linux (ex: `/home/seu_usuario/`) e não em uma pasta do Windows (ex: `/mnt/c/Users/...`).\n\n**2. Ajuste as Permissões das Pastas (Apenas para Linux/WSL):**\n   Para permitir que o contêiner do Airflow escreva na sua máquina local, execute o seguinte comando na raiz do projeto:\n   ```bash\n   sudo chmod -R 777 data_lake source_data\n   ```\n\n**3. Inicie os Serviços com Docker Compose:**\n   Navegue até a pasta raiz do projeto no seu terminal e execute:\n   ```bash\n   docker-compose up -d\n   ```\n   Aguarde alguns minutos para que o Docker baixe as imagens e inicialize todos os serviços.\n\n**4. Acesse a Interface do Airflow:**\n   - Abra seu navegador e acesse: `http://localhost:8080`\n   - Use as seguintes credenciais para fazer login:\n     - **Usuário**: `admin`\n     - **Senha**: `admin`\n\n**5. Ative e Execute a DAG:**\n   - Na página inicial, encontre a DAG `banvic_etl_pipeline`.\n   - Ative-a usando o botão de alternância à esquerda.\n   - Para uma execução de teste, clique no ícone de \"Play\" (▶️) à direita e depois em \"Trigger DAG\".\n   - Você pode acompanhar o progresso em tempo real clicando no nome da DAG e acessando a \"Grid View\".\n\n## Verificação dos Resultados\n\nApós a execução bem-sucedida da DAG (todas as tarefas em verde escuro), você pode verificar os resultados:\n\n**1. Arquivos no Data Lake:**\n   - Navegue até a pasta `data_lake/` no seu projeto.\n   - Uma nova pasta com a data da execução terá sido criada (ex: `2024-09-14/`).\n   - Dentro dela, as subpastas `postgres_source` e `csv_source` conterão os arquivos `.csv` extraídos.\n\n**2. Dados no Data Warehouse:**\n   - Conecte-se ao banco de dados do Data Warehouse usando sua ferramenta preferida (DBeaver, DataGrip, etc.).\n   - **Detalhes da Conexão:**\n     - **Host**: `localhost`\n     - **Porta**: `55433`\n     - **Banco de Dados**: `banvic_dw`\n     - **Usuário**: `dw_admin`\n     - **Senha**: `dw_password`\n   - Você verá as tabelas (`agencias`, `clientes`, `transacoes`, etc.) criadas e preenchidas com os dados.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffervinicius%2Fbank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffervinicius%2Fbank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffervinicius%2Fbank/lists"}