Meu Tanque Fácil
Aplicativo móvel para simplificar e otimizar o gerenciamento de combustível para motoristas, auxiliando na tomada de decisão no momento do abastecimento e no controle de consumo.
Meu Tanque Fácil
Visão Geral
Aplicativo móvel para simplificar e otimizar o gerenciamento de combustível para motoristas, auxiliando na tomada de decisão no momento do abastecimento e no controle de consumo.
Objetivo
Desenvolver um aplicativo móvel que forneça informações rápidas e precisas sobre:
- Nível do tanque e autonomia
- Custo de abastecimento
- Comparativo entre etanol e gasolina
- Controle de manutenção básica do veículo
Stack de Desenvolvimento
Frontend
- Framework: React Native (com Expo)
- Padrão de Arquitetura: MVC (Model-View-Controller)
- Navegação: Expo Router
- Gerenciamento de Estado: Zustand
- Banco de Dados Local: SQLite
- Biblioteca de Gestos: React Native Gesture Handler
- Controle de Versão: Git com GitHub
Principais Funcionalidades
1. Configuração do Veículo
- Definição da capacidade do tanque
- Configuração do consumo de combustível (manual ou aprendizado)
- Seleção do tipo de combustível (gasolina, etanol ou flex)
2. Gerenciamento de Combustível
- Registro do nível de combustível
- Cálculo de autonomia restante
- Estimativa de litros necessários para encher o tanque
3. Decisão de Abastecimento
- Comparação dinâmica entre etanol e gasolina
- Cálculo do custo para encher o tanque
- Recomendação do melhor combustível para abastecer
4. Registro de Abastecimento
- Entrada de preços de combustível
- Cálculo de litros baseado no valor a pagar
- Registro de quilometragem
- Opção de registrar localização (GPS)
5. Manutenção Básica
- Lembretes de calibragem de pneus
- Controle de calibragem do estepe
- Histórico de manutenções
6. Histórico e Relatórios
- Lista de todos os abastecimentos
- Detalhes completos de cada abastecimento
- Cálculo de consumo médio
- Visualização de histórico em mapa
Estrutura do Projeto
meu-tanque-facil/
├── assets/ # Recursos estáticos (imagens, ícones, fontes)
├── src/
│ ├── components/ # Componentes reutilizáveis
│ ├── screens/ # Telas da aplicação
│ ├── models/ # Modelos de dados
│ ├── controllers/ # Lógica de negócios
│ ├── services/ # Serviços (API, banco de dados)
│ ├── utils/ # Utilitários e helpers
│ └── store/ # Gerenciamento de estado (Zustand)
├── App.js # Ponto de entrada da aplicação
└── app.json # Configuração do Expo
Pré-requisitos
- Node.js (versão LTS recomendada)
- npm
- Expo CLI instalado globalmente
- Dispositivo móvel com o aplicativo Expo Go ou emulador
Como Executar
Instalação
# Clonar o repositório
git clone [URL_DO_REPOSITORIO]
# Instalar dependências
cd meu-tanque-facil
npm install
# ou
yarn install
Executando o Projeto
# Iniciar o servidor de desenvolvimento
expo start
Próximos Passos
- Configurar ambiente de desenvolvimento
- Implementar navegação entre telas
- Desenvolver componentes principais
- Implementar lógica de negócios
- Configurar banco de dados local (SQLite)
- Testes e validações
Licença
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
Última atualização: 11/08/2025
Plano de Ação Global: Khypukamayuq
Nota: Todas as inteligências artificiais utilizadas por mim recebem o nome Khypukamayuq. Este plano de ação deve sempre conter e detalhar as ações que a IA irá executar para controlar, monitorar e potencializar o projeto.
Objetivo
Controlar, monitorar e otimizar o desenvolvimento do projeto "Meu Tanque Fácil" utilizando a inteligência artificial Khypukamayuq (Copilote Windsurf Cursor e demais instâncias Khypukamayuq).
Funções da IA
- Gerenciar planos de ação das features e prompts
- Sugerir melhorias e automações
- Monitorar progresso e alertar sobre atrasos
- Auxiliar na tomada de decisão técnica
- Garantir alinhamento com requisitos e cronograma
- Executar e registrar todas as ações realizadas pela IA no projeto
- Commits: Apenas o usuário humano pode realizar commits. A IA irá preparar e propor mensagens de commit, mas nunca executará o comando
git commit.
Etapas de Controle
- ✅ Mapear todas as features e prompts do projeto
- ✅ Integrar planos de ação das pastas dedicadas
- ✅ Definir indicadores de progresso (checklists, status, datas)
- 🔄 Automatizar notificações e sugestões de melhoria
- 🔄 Realizar revisões periódicas dos planos e execução
- 🔄 Gerar relatórios de acompanhamento
- ✅ Documentar todas as ações executadas pela IA Khypukamayuq
Progresso Atual - Primeira Tela Implementada ✅
O que foi implementado:
-
Tela de Cadastro de Veículos (
/veiculo-cadastro)- Formulário completo com validação
- Campos: nome, capacidade do tanque, consumo gasolina/etanol, tipo de ponteiro
- Switches para localização e lembretes de calibragem
- Navegação com botão voltar
- Edição de Veículos: Formulário pré-preenchido com dados do veículo existente.
-
Tela Principal de Veículos (
/veiculos)- Lista de veículos cadastrados
- Botões de ação (editar/excluir)
- Estado vazio com mensagem orientativa
- Navegação para cadastro
-
Dashboard Principal (
/)- Interface moderna e intuitiva
- Cards de ação rápida
- Status do veículo atual
- Lembretes e estatísticas
- Navegação integrada
- Lembrete de Calibragem de Pneus: Exibição de alerta e botão para confirmar calibragem.
-
Estrutura de Tipos
- Interfaces TypeScript para Veiculo e Abastecimento
- Tipos baseados no modelo de dados SQLite definido
-
Navegação
- Tab "Veículos" adicionada ao layout principal
- Rotas organizadas seguindo a estrutura do projeto
- Navegação Inferior Atualizada:
- Aba "Explore" removida.
- Abas "Relatórios", "Configurações" adicionadas.
✅ SQLite Implementado com Sucesso!
Estrutura do Banco de Dados:
- Tabela Carro: Armazena todos os dados dos veículos
- Migração: Adicionada coluna
dataUltimaCalibragemcom estratégia de migração.
- Migração: Adicionada coluna
- Tabela Abastecimentos: Preparada para futuros registros
- Relacionamentos: Chave estrangeira entre veículos e abastecimentos.
✅ Tela de Registro de Abastecimentos Implementada!
Funcionalidades Implementadas:
- Formulário Completo: Data, quilometragem, litros, preço por litro, valor total
- Cálculos Automáticos: Preço por litro e valor total calculados automaticamente
- Validações: Campos obrigatórios e validações de valores
- Tipos de Combustível: Seleção entre Gasolina e Etanol
- Tipos de Trajeto: Cidade, Estrada ou Misto
- Calibragem de Pneus: Switch para marcar se foi realizada
- Integracão com Banco: Serviço completo para CRUD de abastecimentos
- Hook Personalizado: useAbastecimentos para gerenciamento de estado
- Cálculo de Consumo: Função para calcular consumo médio por veículo
Arquitetura:
app/abastecimento-registro.tsx- Tela de registroservices/abastecimentoService.ts- Operações CRUD no bancohooks/useAbastecimentos.ts- Hook personalizado para gerenciar estado- Integração completa com o banco SQLite existente
Funcionalidades Implementadas (Veículos):
- ✅ Criação de veículos com persistência
- ✅ Listagem de veículos do banco
- ✅ Exclusão de veículos (com validação de integridade)
- ✅ Atualização de veículos
- ✅ Hook personalizado para gerenciamento de estado
- ✅ Tratamento de erros e loading states
- ✅ Refresh control para atualizar dados
- ✅ Validação de exclusão (impede exclusão se há abastecimentos)
Arquitetura (Veículos):
database/database.ts- Configuração e inicialização do SQLiteservices/veiculoService.ts- Operações CRUD no bancohooks/useVeiculos.ts- Hook personalizado para gerenciar estado- Integração completa com as telas existentes
✅ Tela de Histórico de Abastecimentos Implementada!
- Tela:
app/abastecimento-historico.tsx - Funcionalidade: Lista todos os abastecimentos registrados, com opção de exclusão.
- Acesso: Botão "📊 Histórico" no Dashboard.
✅ Tela de Comparador de Combustível Implementada!
- Tela:
app/combustivel-comparador.tsx - Funcionalidade: Permite comparar preços de gasolina e etanol com base no consumo do veículo, recomendando a melhor opção.
- Acesso: Botão "⚖️ Comparar" no Dashboard.
✅ Cálculo de Consumo Médio Implementado!
- Tela:
app/(tabs)/relatorios.tsx - Funcionalidade: Calcula e exibe o consumo médio (km/L) para cada veículo, baseado nos abastecimentos registrados.
- Acesso: Nova aba "Relatórios" no menu inferior.
✅ Relatórios Avançados Implementado!
- Tela:
app/(tabs)/relatorios.tsx - Funcionalidade: Exibe estatísticas gerais de gastos, litros abastecidos, quilometragem total e custo médio por litro.
- Tela de Mapa:
app/abastecimento-mapa.tsxpara visualização dos abastecimentos no mapa, utilizando OpenStreetMap (escolhido por ser gratuito e de código aberto). - Acesso: Botão "Ver Mapa" na tela de Relatórios.
🔧 Problemas Identificados e Corrigidos:
1. Erro de Importação SQLite:
- ❌
import * as SQLite from 'expo-sqlite' - ✅
import { openDatabase } from 'expo-sqlite' - Status: Corrigido ✅
2. Tratamento de Erros Melhorado:
- Adicionado logging detalhado para debug
- Fallback para carregar veículos mesmo com erro de inicialização
- Status: Implementado ✅
3. Arquivo de Teste SQLite:
- Criado
database/test.tspara verificação de funcionamento - Status: Criado ✅
4. Problema de Versão do expo-sqlite:
- ❌ Versão 15.2.14 com problemas de compatibilidade
- ✅ Versão 11.3.3 instalada (mais estável)
- Status: Corrigido ✅
5. Tela de Teste SQLite:
- Criada tela
/test-sqlitepara verificar funcionamento - Botão de teste adicionado ao dashboard
- Status: Implementado ✅
6. Problema de Navegação para Abastecimento:
- ❌ Botão de abastecimento navegando para tela inexistente
- ✅ Corrigida versão do expo-sqlite (15.2.14 → 11.3.3)
- ✅ Navegação corrigida para
/abastecimento-registro - Status: Corrigido ✅
7. Ambiguidade de Configuração (Tipo de Ponteiro):
- ❌ Configuração de "Tipo de Ponteiro" duplicada em "Ajustes e Personalização" e "Editar Dados do Carro".
- ✅ Removida a configuração de "Tipo de Ponteiro" da tela "Ajustes e Personalização" (
app/(tabs)/configuracoes.tsx). Now is managed exclusively in the vehicle creation/editing screen. - Status: Corrigido ✅
8. Erro de Rota e Inicialização do Banco de Dados:
- ❌
WARN [Layout children]: No route named "manutencao-historico" exists in nested children - ❌
ERROR Erro ao criar tabelas: [TypeError: Cannot read property 'some' of undefined] - ✅ Movidas as telas de manutenção para o diretório
app/(tabs)/. - ✅ Corrigido o acesso à propriedade
rowsna migração do banco de dados. - Status: Corrigido ✅
9. Normalização de Inputs e Experiência do Usuário na Tela de Abastecimento:
- ✅ Implementada a normalização de campos de texto (data no formato DD/MM/AAAA, valores numéricos como float com vírgula).
- ✅ Corrigido o problema de exibição de '0' nos campos numéricos ao carregar a tela, exibindo placeholders corretamente.
- ✅ Adicionada
KeyboardAvoidingViewekeyboardShouldPersistTaps="handled"para evitar que o teclado cubra os campos de input. - Status: Concluído ✅
10. Implementação do Modal de Calibragem:
- ✅ Adicionado modal para perguntar sobre a calibragem dos pneus ao salvar um abastecimento.
- ✅ Corrigida a importação do
veiculoService. - ✅ Corrigida a chamada da função
atualizarDataUltimaCalibragem. - Status: Concluído ✅
Próximos passos:
- ✅ Configurações: Implementadas as opções de configuração do aplicativo na aba "Configurações", incluindo salvamento automático e remoção de redundâncias.
- Manutenção Básica: Desenvolver as funcionalidades de lembretes e histórico de manutenção.
- ✅ Relatórios Avançados: Expandida a tela de relatórios com mais métricas e visualizações (ex: histórico em mapa).
Critérios de Aceite
- Todos os planos de ação estão integrados e monitorados
- Progresso do projeto é acompanhado e reportado
- Sugestões da IA são registradas e avaliadas
- Decisões técnicas são documentadas
- Todas as ações da IA Khypukamayuq estão descritas e acessíveis no plano
Este plano de ação global garante que Khypukamayuq atue como supervisor inteligente, potencializando o desenvolvimento e a organização do projeto.
Aviso de Idioma: Todas as respostas e interações devem ser em português.
Erros e Lições Aprendidas com a IA
Erro: Uso incorreto do parâmetro newContent na ferramenta replace
Descrição: Ao tentar usar a ferramenta replace para modificar o conteúdo de um arquivo, foi utilizado o parâmetro newContent em vez do parâmetro correto new_string. Isso resultou em um erro [Operation Cancelled] Reason: User did not allow tool call porque a ferramenta não reconheceu o parâmetro fornecido.
Solução: Sempre utilize o parâmetro new_string para fornecer o conteúdo de substituição ao usar a ferramenta replace. O nome do parâmetro é new_string, não newContent.
Exemplo Correto:
print(default_api.replace(file_path = "caminho/do/arquivo.txt", old_string = "texto antigo", new_string = "novo texto"))
Related Documents
Totem — Development Rules
- **pnpm only** (never npm/yarn). Use `pnpm dlx` (never `npx`). Windows 11 + Git Bash. TypeScript strict mode.
MechCAD-MLLM
我们将这一新模型暂定名为 **"MechCAD-MLLM"**(面向机械领域的CAD多模态大模型)。
Gemini Project Context: ScryFall-UI
This file provides context for the Gemini AI assistant to understand and effectively assist with this project.
GEMINI.md — FIM One Instructional Context
FIM One is an AI-powered **Connector Hub** that serves as a bridge between disjointed enterprise systems (ERP, CRM, OA, Databases) through autonomous AI agents.