Conectando cidadãos e gestão pública para um Recife mais verde.
O Arbo é uma solução digital integrada (Dashboard + App) desenvolvida para enfrentar os desafios da arborização urbana na cidade do Recife. A plataforma combina análise de dados geoespaciais, inteligência artificial e ciência cidadã para monitorar a cobertura vegetal, identificar ilhas de calor e gerenciar riscos de queda de árvores.
- Sobre o Projeto
- Funcionalidades Chave
- Arquitetura e Tecnologias
- Ciência de Dados e Pipeline
- Instalação e Execução
- Estrutura do Repositório
- Equipe
A arborização urbana é vital para a qualidade de vida, especialmente em cidades tropicais como Recife. O Arbo atua em duas frentes:
- Para o Gestor Público: Um dashboard analítico que consolida dados do censo arbóreo, permitindo visualizar déficits de cobertura, saúde das espécies e eficiência das equipes de manutenção.
- Para o Cidadão: Uma ferramenta de engajamento que permite reportar problemas (podas, riscos), visualizar a "nota verde" do seu bairro e receber insights educativos sobre a flora local.
Diferenciais:
- Uso de IA Generativa (Gemini) para gerar insights automáticos sobre os dados.
- Tratamento avançado de dados do Censo Arbóreo (Imputação via KNN).
- Visualização de dados georreferenciados de alta performance.
- KPIs em Tempo Real: Monitoramento de chamados abertos, riscos iminentes e tempo médio de atendimento.
- Mapa de Calor (Heatmap): Visualização da densidade arbórea e clusters de incidentes por bairro/RPA.
- Análise Biométrica: Gráficos sobre porte, altura e diâmetro das árvores da cidade.
- Reporte de Incidentes: Interface intuitiva para registrar solicitações de poda, denúncias de corte ou risco de queda.
- Geolocalização: Marcação precisa de ocorrências no mapa da cidade.
- Insights Automatizados: O sistema analisa os dados tabulares e gera resumos textuais inteligentes (ex: "O bairro Boa Viagem apresenta um déficit de 15% na cobertura em relação à média da cidade").
O projeto segue uma arquitetura moderna baseada em microsserviços e contêineres.
- Framework: React (Vite) + TypeScript
- UI/UX: Tailwind CSS, Shadcn UI
- Mapas: Leaflet + React Leaflet
- Visualização de Dados: Recharts
- Runtime: Node.js (Express)
- Banco de Dados: PostgreSQL (via Supabase)
- IA: Integração com Google Gemini API
- Serviços: Processamento de GeoJSON, Gestão de Chamados
- Linguagem: Python 3.10+
- Bibliotecas: Pandas, GeoPandas, Scikit-learn (KNN Imputer/Classifier)
- Formato de Dados: GeoJSON, H5, CSV Otimizado
- Containerização: Docker & Docker Compose
A inteligência do Arbo reside no tratamento rigoroso dos dados brutos do censo. O fluxo de dados (ETL) é executado da seguinte forma:
- Ingestão: Dados brutos do
censo_arboreo.geojson(Open Data Recife). - Limpeza e Imputação (Python):
- Remoção de colunas legadas.
- Tratamento de Missing Values: Uso do algoritmo KNN Imputer para estimar altura e copa de árvores com dados faltantes (zeros), baseando-se em vizinhos similares.
- Classificação de Espécies: Uso de KNN Classifier para inferir espécies não identificadas com base na biometria.
- Otimização:
- Exportação de CSVs agregados (
bairro_stats.csv) para leitura rápida pelo Frontend. - Amostragem estatística para renderização performática do Heatmap (
heatmap_data.csv).
- Exportação de CSVs agregados (
- Docker e Docker Compose instalados.
- Chave de API do Google Gemini (para funcionalidades de IA).
- Clone o repositório:
git clone https://github.com/voltz-corp/arbo.git
cd arbo- Configuração de Ambiente:
Crie os arquivos .env baseados nos exemplos:
cp .env.example .env
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envEdite o arquivo backend/.env e insira sua GEMINI_API_KEY.
- Processamento de Dados (Primeira Execução):
Antes de subir a aplicação, processe os dados brutos para gerar os CSVs otimizados:
cd data
pip install -r requirements.txt
python export_to_csv.py
cd ..- Executar com Docker (Recomendado):
Utilize o Makefile para subir todo o ambiente:
make upOu via Docker Compose diretamente:
docker-compose up --build- Acessar a Aplicação:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
arbo/
├── backend/ # API Node.js Express
│ ├── models/ # Modelos de dados (Incident, etc.)
│ ├── gemini-service.js # Integração com IA
│ └── index.js # Entrypoint da API
├── data/ # Pipeline de Ciência de Dados
│ ├── censo_arboreo.geojson # Dados Brutos
│ ├── data-process.ipynb # Notebook de Análise e Limpeza (EDA)
│ ├── export_to_csv.py # Script de transformação para Prod
│ └── *.csv # Dados processados para o Frontend
├── frontend/ # Aplicação React
│ ├── src/
│ │ ├── components/ # Componentes UI (Mapas, Charts, KPI)
│ │ ├── hooks/ # Hooks customizados (use-incidents, use-ai)
│ │ ├── pages/ # Rotas da aplicação
│ │ └── lib/ # Utilitários (Leaflet, Data parsers)
├── docker-compose.yml # Orquestração dos containers
└── Makefile # Atalhos de comando
Contribuições são bem-vindas! Por favor, siga os passos:
- Faça um Fork do projeto.
- Crie uma Branch para sua Feature (
git checkout -b feature/IncrivelFeature). - Faça o Commit (
git commit -m 'Add: IncrivelFeature'). - Faça o Push (
git push origin feature/IncrivelFeature). - Abra um Pull Request.
Este projeto está sob a licença GNU General Public License v2.0. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido por Voltz Corp - Grupo 4 🚀 Soluções tecnológicas para cidades inteligentes.