entregas_app/README.md

5.1 KiB

App de Entregas com Rotas Curvas - Expo Go

Este aplicativo React Native com Expo foi desenvolvido para gerenciamento de entregas com rotas curvas como o Uber, funcionando perfeitamente no Expo Go.

🚀 Funcionalidades

  • Rotas Curvas: Usa a API do Mapbox para traçar rotas que seguem as ruas, nunca em linha reta
  • Compatível com Expo Go: Funciona sem necessidade de dev build ou EAS Build
  • Ordenação Inteligente: Algoritmo do vizinho mais próximo para otimizar rotas
  • Interface Moderna: UI/UX inspirada no Uber com mapas interativos
  • Gestão de Entregas: Status tracking, fotos, assinaturas e sincronização

🛠️ Tecnologias Utilizadas

  • React Native com Expo SDK 53
  • react-native-maps para mapas (compatível com Expo Go)
  • API do Mapbox para rotas curvas
  • TypeScript para tipagem segura
  • AsyncStorage e SQLite para persistência local
  • React Navigation para navegação

📱 Componentes Principais

1. DeliveryMap

Componente principal que renderiza o mapa com rotas curvas:

  • Usa react-native-maps (compatível com Expo Go)
  • Integra com API do Mapbox para rotas
  • Mostra marcadores coloridos por status
  • Suporte a modo fullscreen

2. useMapboxDirections

Hook customizado para obter rotas da API do Mapbox:

  • Calcula rotas otimizadas entre múltiplos pontos
  • Converte coordenadas GeoJSON para react-native-maps
  • Tratamento de erros e fallbacks

3. sortDeliveriesByDistanceAndDate

Função que implementa o algoritmo do vizinho mais próximo:

  • Calcula distâncias usando fórmula de Haversine
  • Ordena entregas por proximidade e data
  • Suporte a geocodificação de endereços

🗺️ Como as Rotas Funcionam

  1. Coleta de Coordenadas: O app coleta coordenadas das entregas (lat/lng)
  2. Ordenação: Aplica algoritmo do vizinho mais próximo para otimizar rota
  3. API Mapbox: Envia waypoints ordenados para a API de direções
  4. Rota Curva: Recebe coordenadas que seguem as ruas (GeoJSON)
  5. Renderização: Desenha Polyline no mapa com as coordenadas recebidas

🚀 Como Executar

# Instalar dependências
npm install

# Iniciar o projeto
npx expo start

# Escanear QR code no Expo Go

🔧 Configuração

Token do Mapbox

O token já está configurado no código. Para usar seu próprio:

  1. Crie uma conta em mapbox.com
  2. Gere um token de acesso público
  3. Substitua em src/hooks/useMapboxDirections.ts

API de Entregas

Configure sua API em src/services/api.ts:

  • URL base da API
  • Endpoints de autenticação e entregas
  • Headers de autorização

📊 Estrutura de Dados

Interface Delivery

interface Delivery {
  id: string;
  outId: number;
  customerName: string;
  street: string;
  streetNumber: string;
  neighborhood: string;
  city: string;
  state: string;
  customerPhone: string;
  lat: number | null;
  lng: number | null;
  status: 'in_progress' | 'completed' | 'pending';
  coordinates?: {
    latitude: number;
    longitude: number;
  };
  // ... outras propriedades
}

🎯 Vantagens da Solução

Compatibilidade com Expo Go

  • Usa apenas bibliotecas compatíveis com Expo Go
  • Não requer dev build ou EAS Build
  • Funciona imediatamente após expo start

Rotas Realistas

  • Seguem as ruas reais (não linhas retas)
  • Consideram sentido das vias
  • Evitam vias bloqueadas ou restritas

Performance Otimizada

  • Algoritmo eficiente de ordenação
  • Cache de rotas para evitar requisições desnecessárias
  • Lazy loading de componentes de mapa

UX Profissional

  • Interface similar ao Uber
  • Feedback visual em tempo real
  • Navegação intuitiva entre telas

🔄 Fluxo de Trabalho

  1. Login: Autenticação do entregador
  2. Lista de Entregas: Visualização de todas as entregas do dia
  3. Rotas: Mapa com rota otimizada e marcadores
  4. Detalhes: Informações completas da entrega
  5. Navegação: Integração com apps de navegação
  6. Finalização: Captura de fotos e assinatura

🐛 Troubleshooting

Mapa não carrega

  • Verifique conexão com internet
  • Confirme se o token do Mapbox está válido
  • Teste em dispositivo físico (melhor que emulador)

Rotas não aparecem

  • Verifique se as entregas têm coordenadas válidas
  • Confirme se a API do Mapbox está respondendo
  • Verifique logs no console para erros

Performance lenta

  • Reduza número de marcadores simultâneos
  • Implemente virtualização para listas grandes
  • Use cache para rotas já calculadas

📈 Próximos Passos

  • Implementar cache offline de rotas
  • Adicionar suporte a múltiplos veículos
  • Integrar com sistema de tráfego em tempo real
  • Implementar notificações push
  • Adicionar analytics de performance

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

📄 Licença

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


Desenvolvido para funcionar perfeitamente no Expo Go com rotas curvas como o Uber! 🚚🗺️