Loading repository data…
Loading repository data…
adryan1-dev / repository
O DeliveryLens Analytics é um projeto de Engenharia de Dados que simula um sistema de delivery. Consome dados de uma API REST, processa em Python e armazena em PostgreSQL em camadas Bronze, Silver e Gold para análises com SQL.
O DeliveryLens Analytics é uma plataforma de engenharia de dados desenvolvida para simular um ambiente real de processamento analítico de uma empresa de delivery.
O objetivo do projeto é construir uma pipeline completa de dados, desde a ingestão de dados através de uma API REST até a disponibilização dos dados em um banco analítico, utilizando boas práticas de Engenharia de Dados.
O projeto aplica conceitos utilizados no mercado como:
API REST
|
↓
Python Data Ingestion
|
↓
Apache Airflow
|
↓
Bronze Layer (dados brutos)
|
↓
Silver Layer (dados validados)
|
↓
PostgreSQL Database
|
↓
Analytics / BI Layer
A pipeline realiza a coleta dos dados através de uma API REST utilizando Python.
Responsável por:
Tecnologias:
Camada responsável por salvar o dado exatamente como chegou da fonte, sem nenhuma transformação.
Motivação: em ambientes reais, nunca devemos perder o dado original. A Bronze serve para auditoria, reprocessamento, histórico e recuperação em caso de falha nas camadas seguintes.
Responsável por:
Arquivo gerado: data/bronze/users_.json
Camada responsável por validar os registros vindos da Bronze, sem descartar dados.
Cada registro é lido do arquivo Bronze mais recente e passa por validações de:
id presentename presente e não vazioemail presente e com formato válidoCada registro recebe dois campos adicionais:
is_valid: true ou falsevalidation_errors: lista com os motivos de invalidação (vazia se o registro for válido)Nenhum registro é descartado nessa etapa — inválidos são mantidos e sinalizados, para investigação posterior.
Arquivo gerado: data/silver/users_.json
O workflow é gerenciado pelo Apache Airflow.
A DAG é responsável por:
Fluxo da DAG: Start | ↓ Run Delivery Pipeline | ↓ Extract API Data | ↓ Save Bronze | ↓ Transform to Silver | ↓ Load PostgreSQL | ↓ Finish
Os dados são armazenados utilizando PostgreSQL.
Modelo inicial: deliverylens │ └── deliveries_test │ ├── id ├── user_id ├── name ├── username └── email
DeliveryLens-Analytics/ │ ├── airflow/ │ └── dags/ │ └── deliverylens_pipeline.py │ ├── src/ │ │ │ ├── ingestion/ │ │ └── api_ingestion.py │ │ │ ├── bronze/ │ │ └── bronze_loader.py │ │ │ ├── silver/ │ │ └── silver_transformer.py │ │ │ ├── pipeline/ │ │ └── delivery_pipeline.py │ │ │ ├── db/ │ │ ├── connection.py │ │ └── repository.py │ │ │ └── config/ │ └── settings.py │ ├── data/ # dados gerados pelo pipeline (ignorado no Git) │ ├── bronze/ │ └── silver/ │ ├── docker-compose.yml ├── requirements.txt └── README.md
Necessário possuir:
git clone https://github.com/adryan1-dev/DeliveryLens-Analytics.git
cd DeliveryLens-Analytics
Crie um arquivo: .env
Exemplo:
DB_NAME=deliverylens
DB_USER=postgres
DB_PASSWORD=password
DB_HOST=localhost
DB_PORT=5432
API_URL=https://jsonplaceholder.typicode.com/users
API_TIMEOUT=10
docker compose up -d
Serviços iniciados:
| Serviço | Porta |
|---|---|
| Airflow Webserver | 8080 |
| PostgreSQL | 5433 |
Abra: http://localhost:8080
Execute a DAG: deliverylens_pipeline
Também é possível executar diretamente pelo terminal:
docker compose exec airflow-scheduler \
airflow dags test deliverylens_pipeline 2026-07-11
Resultado esperado: Silver Layer: X registros validos, Y invalidos Pipeline executada com sucesso! DagRun Finished state: success
Após a execução, os dados ficam disponíveis em: data/bronze/users_.json # dado bruto, como veio da API data/silver/users_.json # dado validado, com is_valid e validation_errors
O projeto está sendo desenvolvido seguindo uma evolução próxima de ambientes reais.
Roadmap:
Implementação: Bronze Layer ✅ | ↓ Silver Layer ✅ | ↓ Gold Layer 🚧
save_bronze()id, name, email), com is_valid e validation_errorsPlanejado:
task_ingestion, task_bronze, task_silver, task_gold)Planejado:
Este projeto foi desenvolvido como estudo prático de Engenharia de Dados, aplicando conceitos utilizados em ambientes profissionais para construção de pipelines escaláveis e confiáveis.
Adryan Chaves
Estudante de Engenharia de Dados / Desenvolvimento de Sistemas
Foco em:
⭐ Se este projeto foi útil, considere deixar uma estrela no repositório!