commit de50e6cb14449b5111d80fd37bcf407e97cb0010 Author: JuruSysadmin Date: Wed Jan 7 09:24:37 2026 -0300 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea4e55b --- /dev/null +++ b/README.md @@ -0,0 +1,173 @@ +# 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 + +```bash +# 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](https://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 +```typescript +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! 🚚🗺️** \ No newline at end of file