entregas_app/README.md

173 lines
5.1 KiB
Markdown
Raw Normal View History

2026-01-07 12:24:37 +00:00
# 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! 🚚🗺️**