Skip to content

mpraes/webapp_gas_mais_barato

Repository files navigation

🏠 Gas Mais Barato - Dashboard de Preços GLP

Um dashboard web simples desenvolvido em Flask que permite aos usuários consultar preços oficiais de GLP (Gás Liquefeito de Petróleo) de 13kg por cidade, utilizando dados da ANP (Agência Nacional do Petróleo, Gás Natural e Biocombustíveis).

Esse dash está na web como webapp-gas-mais-barato.onrender.com

📋 Descrição

Este projeto foi desenvolvido para facilitar a consulta de preços de GLP de 13kg em diferentes cidades brasileiras. O dashboard utiliza dados oficiais da ANP e oferece uma interface amigável, moderna e interativa para que os usuários possam encontrar o melhor preço do gás em sua região.

O frontend conta com animações, atalhos de teclado, notificações toast, exportação de dados, gráficos dinâmicos e outras melhorias de experiência do usuário.

✨ Funcionalidades

  • Busca por Cidade e Estado: Filtro por município e UF para encontrar revendedores locais
  • Consulta de Preços: Visualização dos preços oficiais de GLP 13kg
  • Informações das Empresas: Dados das revendedoras incluindo CNPJ e endereço
  • Filtros Avançados: Busca por estado, bandeira da empresa e período
  • Interface Responsiva e Animada: Design adaptável, com animações de fade-in nos cards e tooltips informativos
  • Atalhos de Teclado: Pesquise rapidamente (Ctrl/Cmd+K) ou limpe filtros (Esc)
  • Notificações Toast: Feedback visual para ações do usuário
  • Exportação para CSV: Exporte os resultados da busca facilmente
  • KPIs Dinâmicos: Indicadores de preço médio, mínimo, máximo, total de cidades e empresas, com gráficos sparkline
  • Copiar para Área de Transferência: Copie informações rapidamente
  • Reportar Preço: Botão para enviar e-mail reportando preços diferentes, com confirmação
  • API REST: Endpoints para integração com outros sistemas
  • Filtros Persistentes: Filtros de busca salvos automaticamente no navegador
  • Ordenação de Colunas: Agora é possível ordenar os resultados da tabela por qualquer coluna (Cidade, Estado, Data Coleta, Empresa, Preço, Endereço, Bandeira) clicando no cabeçalho correspondente.

🛠️ Tecnologias Utilizadas

  • Backend: Flask (Python)
  • Frontend: HTML, CSS, JavaScript
  • Framework CSS: Bootstrap 5
  • Processamento de Dados: Pandas
  • Dados: CSV com informações oficiais da ANP

🏗️ Arquitetura do Projeto

webapp_gas_mais_barato/
├── src/                    # Código fonte principal
│   ├── __init__.py        # Pacote Python
│   ├── app.py             # Aplicação Flask principal
│   └── data_processor.py  # Processamento e filtros de dados
├── templates/             # Templates HTML
│   ├── base.html          # Template base
│   ├── index.html         # Página principal
│   ├── about.html         # Página sobre
│   ├── 404.html           # Página de erro 404
│   ├── 500.html           # Página de erro 500
│   └── error.html         # Página de erro genérica
├── static/                # Arquivos estáticos
│   ├── css/
│   │   └── style.css      # Estilos personalizados
│   └── js/
│       └── main.js        # JavaScript principal
├── data/                  # Dados da ANP
│   ├── ultimas-4-semanas-glp.csv
│   └── CAPACIDADE DE TANQUE.pdf
├── main.py                # Script principal de execução
├── config.py              # Configurações da aplicação
├── test_data_processor.py # Script de testes
├── pyproject.toml         # Configurações do projeto
├── uv.lock               # Lock file das dependências
└── README.md             # Este arquivo

📦 Instalação

Pré-requisitos

  • Python 3.13 ou superior
  • Gerenciador de pacotes uv (recomendado) ou pip

Passos para Instalação

  1. Clone o repositório

    git clone <url-do-repositorio>
    cd webapp_gas_mais_barato
  2. Instale as dependências

    # Usando uv (recomendado)
    uv sync
    
    # Ou usando pip
    pip install -r requirements.txt
  3. Execute os testes

    python test_data_processor.py
  4. Execute a aplicação

    python main.py
  5. Acesse o dashboard Abra seu navegador e acesse: http://localhost:5000

🚀 Como Usar

  1. Acesse o Dashboard: Abra a aplicação no seu navegador
  2. Selecione Estado e Cidade: Use os filtros para refinar sua busca
  3. Visualize os Preços: Veja os preços de GLP 13kg das diferentes revendedoras
  4. Compare Opções: Analise preços, bandeiras e localizações das empresas
  5. Ordene os Resultados: Clique no cabeçalho de qualquer coluna da tabela de resultados (Cidade, Estado, Data Coleta, Empresa, Preço, Endereço, Bandeira) para ordenar os dados de forma crescente ou decrescente.
  6. Use Atalhos: Ctrl/Cmd+K para focar na busca, Esc para limpar filtros
  7. Exporte Dados: Clique em "Exportar CSV" para baixar os resultados
  8. Copie Informações: Use o botão de copiar para transferir dados para a área de transferência
  9. Reportar Preço: Clique no botão de e-mail para reportar preços diferentes (notificação será exibida)
  10. Filtros Salvos: Seus filtros são salvos automaticamente e restaurados ao recarregar a página

🔧 Scripts Disponíveis

Processamento de Dados (src/data_processor.py)

O módulo data_processor.py contém a classe GLPDatabaseProcessor que oferece:

  • Carregamento de dados: Leitura do arquivo CSV da ANP
  • Limpeza de dados: Tratamento de valores nulos e formatação
  • Filtros por data: Seleção de período mais recente
  • Filtros por localização: Busca por cidade e estado
  • Estatísticas: Resumo dos dados processados

Aplicação Flask (src/app.py)

A aplicação Flask oferece:

  • Página principal: Dashboard com filtros e resultados
  • API REST: Endpoints para busca de dados
  • Templates: Interface responsiva com Bootstrap
  • Tratamento de erros: Páginas de erro personalizadas

Frontend JavaScript (static/js/main.js)

O arquivo main.js implementa:

  • Animações e tooltips
  • Atalhos de teclado
  • Notificações toast
  • Exportação de resultados para CSV
  • KPIs dinâmicos e gráficos sparkline
  • Persistência de filtros no navegador
  • Função de copiar para área de transferência
  • Botão de reportar preço via e-mail
  • Ordenação dinâmica das colunas da tabela de resultados

Script de Testes (test_data_processor.py)

Execute para verificar se tudo está funcionando:

python test_data_processor.py

📊 Estrutura dos Dados

O dashboard utiliza dados da ANP contendo:

  • Informações Geográficas: Região, Estado, Município
  • Dados das Revendedoras: Nome, CNPJ, Endereço completo
  • Preços: Valor de venda do GLP 13kg
  • Metadados: Data da coleta, bandeira da empresa

🔧 Configuração

Variáveis de Ambiente (Opcional)

Crie um arquivo .env na raiz do projeto:

FLASK_ENV=development
FLASK_DEBUG=True
PORT=5000
SECRET_KEY=sua-chave-secreta-aqui

Configurações (config.py)

O arquivo config.py contém as configurações da aplicação:

  • Configurações do Flask: Secret key, debug mode
  • Caminhos de dados: Localização dos arquivos CSV
  • Parâmetros de processamento: Dias para trás, limite de resultados
  • Configurações da aplicação: Nome, versão, descrição

🌐 API Endpoints

A aplicação oferece os seguintes endpoints:

  • GET / - Página principal do dashboard
  • GET /api/search - Busca de preços com filtros
  • GET /api/cities - Lista de cidades disponíveis
  • GET /api/states - Lista de estados disponíveis
  • GET /api/stats - Estatísticas dos dados
  • GET /about - Página sobre o projeto

Exemplo de uso da API:

# Buscar preços em uma cidade específica
curl "http://localhost:5000/api/search?city=São Paulo&limit=10"

# Obter estatísticas
curl "http://localhost:5000/api/stats"

📈 Funcionalidades Futuras

  • Gráficos de evolução de preços
  • Alertas de preço
  • Comparação entre cidades
  • API REST para integração
  • Aplicativo mobile
  • Histórico de preços
  • Exportação de dados em diferentes formatos
  • Dashboard administrativo

🧪 Testes

Para executar os testes:

# Testar processamento de dados
python test_data_processor.py

# Testar a aplicação Flask
python -m pytest tests/  # Se implementar pytest

🤝 Contribuição

Contribuições são bem-vindas! Para contribuir:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Estrutura para Contribuições

  • Novas funcionalidades: Adicione em src/
  • Templates: Crie em templates/
  • Estilos: Modifique static/css/
  • JavaScript: Atualize static/js/
  • Testes: Adicione em tests/

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

📞 Suporte

Para dúvidas, sugestões ou problemas:

🙏 Agradecimentos

  • ANP - Agência Nacional do Petróleo, Gás Natural e Biocombustíveis pelos dados oficiais
  • Comunidade Flask - Pelo framework web utilizado
  • Bootstrap - Pelo framework CSS responsivo
  • Contribuidores - Todos que ajudaram no desenvolvimento

Desenvolvido com ❤️ para ajudar os brasileiros a encontrar o melhor preço do GLP

About

Repo código da página simples do "Gás Mais Barato"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published